diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-07-26 19:50:29 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-07-26 19:55:59 +0100 |
commit | 964758788a7b4b145fd53971d8c91771749e8d95 (patch) | |
tree | 01968c26e922113db24cfab406ca1251c17ebba4 /dgit | |
parent | f4e23593ad4e04711ec34d5b1d70f3a0508f2b66 (diff) |
Honour dgit-distros.DISTRO.cmd-CMD and .opts-CMD. Closes:#793427.
Diffstat (limited to 'dgit')
-rwxr-xr-x | dgit | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -3164,6 +3164,32 @@ sub parseopts () { } sub finalise_opts_opts () { + foreach my $k (keys %opts_opt_map) { + my $om = $opts_opt_map{$k}; + + my $v = access_cfg("cmd-$k", 'RETURN-UNDEF'); + if (defined $v) { + badcfg "cannot set command for $k" + unless length $om->[0]; + $om->[0] = $v; + } + + foreach my $c (access_cfg_cfgs("opts-$k")) { + local ($debuglevel) = $debuglevel-2; + my @cmd = (@git, qw(config -z --get-all), $c); + my $vs = cmdoutput_errok @cmd; + if ($?==0) { + badcfg "cannot configure options for $k" + if $opts_opt_cmdonly{$k}; + push @$om, split /\0/, $vs; + } elsif ($?==256) { + die "$k $c ?" if length $vs; + } else { + failedcmd @cmd; + } + } + } + foreach my $k (keys %opts_opt_cmdline_opts) { push @{ $opts_opt_map{$k} }, @{ $opts_opt_cmdline_opts{$k} }; } |