# <package> = <subdir>
# <package> = { <subdir> = ... }
#
-# To control use of alternative Cargo.lock filename:
+# Configuration is read from
+#
+# /etc/nailing-cargo/cfg.toml
+# ~/.nailing-cargo.toml
+# ./.nailing-cargo.toml
+# ../Nailing-Cargo.toml
+# ../Cargo.nail
+#
+# To control use of alternative Cargo.lock filename:
# [alt_cargolock]
#
# file = true # equivalent to "Cargo.lock.example"
sub toml_or_enoent ($$) {
my ($f,$what) = @_;
my $toml = read_or_enoent($f) // return;
+ print STDERR "Read TOML from $f\n" if $dump;
my ($v,$e) = from_toml($toml);
if (!defined $v) {
chomp $e;
}
sub loadconfigs () {
- my $cfgleaf = ".nailing-cargo-cfg.toml";
+ my $dotfile = ".nailing-cargo.toml";
+ load1config("../Nailing-Cargo.toml");
+ load1config($dotfile);
+ load1config("$ENV{HOME}/$dotfile") if defined $ENV{HOME};
load1config("/etc/nailing-cargo/cfg.toml");
- load1config("$worksphere/$cfgleaf");
- load1config("$ENV{HOME}/$cfgleaf") if defined $ENV{HOME};
-}
-
-sub getcfg ($$) {
- my ($k, $def) = @_;
- foreach my $cfg (@configs) {
- my $v = $cfg->{$k};
- return $v if defined $v;
- }
- return $def;
}
sub unlink_or_enoent ($) { unlink $_[0] or $!==ENOENT; }
}
sub cfg_uc {
- my $v = $nail;
- foreach my $k (@_) {
- last unless defined $v;
- ref($v) eq 'HASH' or badcfg @_, "parent key \`$k' is not a hash";
- $v = $v->{$k};
+ foreach my $cfg (@configs) {
+ my $v = $cfg;
+ foreach my $k (@_) {
+ last unless defined $v;
+ ref($v) eq 'HASH' or badcfg @_, "parent key \`$k' is not a hash";
+ $v = $v->{$k};
+ }
+ return $v if defined $v;
}
- return $v;
+ return undef;
}
sub cfge {
$nail->{subdirs}
];
}
+
+ unshift @configs, $nail;
}
our @alt_cargo_lock_stat;
die "$self: need command to run\n" unless @ARGV || $noact;
+loadconfigs();
takelock();
readnail();
consider_alt_cargo_lock();