our $worksphere = $src_absdir;
$worksphere =~ s{/([^/]+)$}{}
- or die "$self: cwd \`$worksphere' unsupported!\n";e
+ or die "$self: cwd \`$worksphere' unsupported!\n";
our $subdir = $1; # leafname
our $lockfile = "../.nailing-cargo.lock";
our $cargo_subcmd;
our $command_is_cargo;
our $alt_cargo_lock;
+our $cargo_lock_update;
+our $pass_options;
our $online;
#
-our %subcmd_props = {
-# build (default) =>qw( ),
- update =>qw( lock-update !target ),
-'generate-lockfile'=>qw( lock-update !target ),
- fetch =>qw( !target online !target-dir ),
- };
+our %subcmd_props = (
+# build (default) =>[qw( )],
+'generate-lockfile'=>[qw( lock-update !target !target-dir )],
+ update =>[qw( lock-update !target online )],
+ fetch =>[qw( online !target-dir )],
+ );
our @subcmd_xprops = qw(!manifest-path !offline !locked);
return 0;
}
+sub subcmd_p ($) {
+ print STDERR " subcmd_p ".(join ' ', keys %$cargo_subcmd)." | @_\n"
+ if $dump;
+ $cargo_subcmd->{$_[0]}
+}
+
sub toml_or_enoent ($$) {
my ($f,$what) = @_;
my $toml = read_or_enoent($f) // return;
push @add, qw(--locked) unless subcmd_p('!locked');
if (defined($oot_dir) && !subcmd_p('!manifest-path')) {
push @ARGV, "--manifest-path=${src_absdir}/Cargo.toml" if $pass_options;
- push @add, qw(--target-dir=target) unless subcmd_p('!target');
+ push @add, qw(--target-dir=target) unless subcmd_p('!target-dir');
}
}
my @props = split /\,/, $_;
our %subcmd_prop_ok;
if (!%subcmd_prop_ok) {
- for $v in (\@subcmd_xprops, values %subcmd_props) {
+ foreach my $v (\@subcmd_xprops, values %subcmd_props) {
$subcmd_prop_ok{$_}=1 foreach @$v;
};
}
}
if (!ref($cargo_subcmd)) {
+ print STDERR " cargo_subcmd lookup $cargo_subcmd\n" if $dump;
$cargo_subcmd = $subcmd_props{$cargo_subcmd} // [ ];
}
+
+ print STDERR " cargo_subcmd props @$cargo_subcmd\n" if $dump;
+ my %cargo_subcmd;
+ $cargo_subcmd{$_} = 1 foreach @$cargo_subcmd;
+ $cargo_subcmd = \%cargo_subcmd;
}
parse_args();