From 09afd4d8b287a7401451541a93343987db979db8 Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Tue, 29 Nov 2011 22:41:04 +0000 Subject: [PATCH 1/1] Add support for suffixing parameters with '_append', and corresponding docs. This allows the option of constructing parameter values accumulatively rather than overriding existing parameter values. (cherry picked from commit aa3caf53a9cb35ee3d0e4173ed44e964c6b8b5ab) --- mr | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/mr b/mr index b503fa7..ba0cf0a 100755 --- a/mr +++ b/mr @@ -415,9 +415,14 @@ to keep track of and remember to delete old repositories. =item lib -The "lib" parameter can specify some shell code that will be run before each -command, this can be a useful way to define shell functions for other commands -to use. +The "lib" parameter can specify some shell code that will be run +before each command, this can be a useful way to define shell +functions for other commands to use. Unlike most other parameters, +this can be specified multiple times, in which case the chunks of +shell code are accumulatively concatenated together. This is +particularly useful because it allows the user to build a library of +shell functions defined in the [DEFAULT] section scattered across +various mr modules (files referenced by an C directive). =item fixups @@ -447,6 +452,11 @@ the action that is performed for a given version control system, you can override these VCS specific actions. To add a new version control system, you can just add VCS specific actions for it. +As with the C parameter, if a parameter is suffixed with +C<_append>, its value is concatenated to the existing value of the +parameter for that config block, rather than overwriting it. In this +way, actions such as C can be constructed accumulatively. + =head1 UNTRUSTED MRCONFIG FILES Since mrconfig files can contain arbitrary shell commands, they can do @@ -1287,8 +1297,8 @@ sub loadconfig { if ($section eq 'ALIAS') { $alias{$parameter}=$value; } - elsif ($parameter eq 'lib') { - $config{$dir}{$section}{lib}.=$value."\n"; + elsif ($parameter eq 'lib' or $parameter =~ s/_append$//) { + $config{$dir}{$section}{$parameter}.="\n".$value."\n"; } else { $config{$dir}{$section}{$parameter}=$value; -- 2.39.5