our $subdir = $1; # leafname
our $lockfile = "../.nailing-cargo.lock";
-our $oot_cargo_lock_faff;
+
+our $cargo_lock_update;
+our $cargo_manifest_args;
our @configs;
our $verbose=1;
}
}
+our $oot_dir; # oot.dir or "Build"
+
+sub consider_oot () {
+ $oot_dir = cfgs qw(oot dir);
+ my $use = cfgs qw(oot use);
+ unless (defined($oot_dir) || defined($use)) {
+ $cargo_lock_update//=0;
+ return;
+ }
+ $oot_dir //= 'Build';
+}
+
our %manifests;
our %packagemap;
}
}
-our @out_command;
+sub addargs () {
+ if (@ARGV>=2 &&
+ $ARGV[0] =~ m{\bcargo\b} &&
+ $ARGV[1] =~ m/generate-lockfile|update/) {
+ $cargo_lock_update //= 1;
+ } else {
+ $cargo_lock_update //= 0;
+ }
+ $cargo_manifest_args //=
+ (defined $oot_dir) && !$cargo_lock_update;
+
+ if ($cargo_manifest_args) {
+ push @ARGV, "--manifest-path=${src_absdir}/Cargo.toml",
+ qw(--locked --target-dir=target);
+ }
-our $oot_dir; # oot.dir or "Build"
-our $oot_absdir;
+our $oot_absdir;
our $build_absdir; # .../Build/<subdir>
-sub calculate_oot () {
- $oot_dir = cfgs qw(oot dir);
- my $use = cfgs qw(oot use);
- return unless defined($oot_dir) || defined($use);
- $oot_dir //= 'Build';
-
- if (@ARGV && $ARGV[0] =~ m/generate-lockfile|update/) {
- $oot_cargo_lock_faff = 1;
- }
+sub oot_massage_cmdline () {
+ return unless defined $oot_dir;
+ my $use = cfgs qw(oot use);
$oot_absdir = ($oot_dir !~ m{^/} ? "$worksphere/" : ""). $oot_dir;
$build_absdir = "$oot_absdir/$subdir";
my ($pre,$post);
my @xargs;
- if (!$oot_cargo_lock_faff) {
+ if (!$cargo_lock_update) {
push @xargs, $build_absdir;
($pre, $post) = ('cd "$1"; shift;', '');
} else {
- push @xargs, $build_absdir, $subdir, $src_absdir;
+ push @xargs, $oot_absdir, $subdir, $src_absdir;
($pre, $post) = (<<'END', <<'END');
cd "$1"; shift;
mkdir -p -- "$1"; cd "$1"; shift;
$noact++;
} elsif (s{^-D}{-}) {
$dump++;
- } elsif (s{^-L}{-}) {
- $oot_cargo_lock_faff=1;
+ } elsif (s{^-([uU])}{-}) {
+ $cargo_lock_update= $1=~m/[A-Z]/;
+ } elsif (s{^-([mM])}{-}) {
+ $cargo_manifest_args= $1=~m/[A-Z]/;
} else {
die "$self: unknown short option(s) $_\n";
}
}
+ } elsif (m{^--no-cargo-lock-update}) {
+ $cargo_lock_update=0;
} else {
die "$self: unknown long option $_\n";
}
takelock();
readnail();
+consider_oot();
readorigs();
calculate();
calculate_oot();