+
+ unshift @configs, $nail;
+}
+
+our @alt_cargo_lock_stat;
+
+sub consider_alt_cargo_lock () {
+ my @ck = qw(alt_cargo_lock);
+ # User should *either* have Cargo.lock in .gitignore,
+ # or expect to commit Cargo.lock.example ($alt_cargo_lock)
+
+ $alt_cargo_lock = (cfg_uc @ck);
+
+ my $force = 0;
+ if (defined($alt_cargo_lock) && ref($alt_cargo_lock) eq 'HASH') {
+ $force = cfg_bool qw(alt_cargo_lock force);
+ my @ck = qw(alt_cargo_lock file);
+ $alt_cargo_lock = cfg_uc @ck;
+ }
+ $alt_cargo_lock //= Types::Serialiser::true;
+
+ if (Types::Serialiser::is_bool $alt_cargo_lock) {
+ if (!$alt_cargo_lock) { $alt_cargo_lock = undef; return; }
+ $alt_cargo_lock = 'Cargo.lock.example';
+ }
+
+ if (ref($alt_cargo_lock) || $alt_cargo_lock =~ m{/}) {
+ badcfg @ck, "expected boolean, or leafname";
+ }
+
+ if (!stat_exists $alt_cargo_lock, "alt_cargo_lock") {
+ $alt_cargo_lock = undef unless $force;
+ return;
+ }
+
+ @alt_cargo_lock_stat = stat _;