From bd8d411104596ccedc101de7d3f5304950e06311 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 21 Jun 2020 13:58:46 +0100 Subject: [PATCH] New scheme for subcommand handling - seems to work, ish Signed-off-by: Ian Jackson --- nailing-cargo | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/nailing-cargo b/nailing-cargo index 58a777e..006e029 100755 --- a/nailing-cargo +++ b/nailing-cargo @@ -38,7 +38,7 @@ our $src_absdir = getcwd() // die "$self: getcwd failed: $!\n"; 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"; @@ -46,15 +46,17 @@ 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); @@ -81,6 +83,12 @@ sub stat_exists ($$) { 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; @@ -367,7 +375,7 @@ sub addargs () { 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'); } } @@ -717,7 +725,7 @@ sub parse_args () { 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; }; } @@ -752,8 +760,14 @@ sub parse_args () { } 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(); -- 2.30.2