]> git.madduck.net Git - code/myrepos.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Allow environment variables in section headers. Pass such headers through the shell...
authorJoey Hess <joey@kodama.kitenet.net>
Mon, 12 May 2008 19:16:14 +0000 (15:16 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Mon, 12 May 2008 19:16:14 +0000 (15:16 -0400)
debian/changelog
mr

index 32045e76d5fd9eedc9f5d7b0aa5ee1d7dbd9386c..44bb058acb8a7b505139312ec202dd9fb2f88a15 100644 (file)
@@ -1,3 +1,10 @@
+mr (0.29) UNRELEASED; urgency=low
+
+  * Allow environment variables in section headers. Pass such headers
+    through the shell to expand them. Closes: #480580
+
+ -- Joey Hess <joeyh@debian.org>  Mon, 12 May 2008 15:15:48 -0400
+
 mr (0.28) unstable; urgency=low
 
   * Use debhelper v7, rules file minimisation.
diff --git a/mr b/mr
index d4622d93e01c3ed60be2f4e69dd42cdffadb08f0..bb98ba674df60d6c2cc9e46537c87bc09190a12c 100755 (executable)
--- a/mr
+++ b/mr
@@ -224,7 +224,9 @@ is an alias, and its value is the action to use.
 All other sections add repositories. The section header specifies the
 directory where the repository is located. This is relative to the directory
 that contains the mrconfig file, but you can also choose to use absolute
-paths.
+paths. (Note that you can use environment variables in section names; they
+will be passed through the shell for expansion. For example, 
+"[$HOSTNAME]", or "[${HOSTNAME}foo]")
 
 Within a section, each parameter defines a shell command to run to handle a
 given action. mr contains default handlers for "update", "status",
@@ -717,6 +719,18 @@ sub selectrepos { #{{{
        return @repos;
 } #}}}
 
+sub expandenv { #{{{
+       my $val=shift;
+       
+
+       if ($val=~/\$/) {
+               $val=`echo "$val"`;
+               chomp $val;
+       }
+       
+       return $val;
+} #}}}
+
 my %loaded;
 sub loadconfig { #{{{
        my $f=shift;
@@ -777,7 +791,7 @@ sub loadconfig { #{{{
                chomp;
                next if /^\s*\#/ || /^\s*$/;
                if (/^\[([^\]]*)\]\s*$/) {
-                       $section=$1;
+                       $section=expandenv($1);
                }
                elsif (/^(\w+)\s*=\s*(.*)/) {
                        my $parameter=$1;
@@ -900,7 +914,7 @@ sub modifyconfig { #{{{
                                $addfields->();
                        }
 
-                       $section=$1;
+                       $section=expandenv($1);
 
                        push @out, $_;
                }