summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2003-08-06 14:48:29 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2003-08-06 14:48:29 +0000
commitf8035d06f2031fb1bdf30eee82a1beb707bbe044 (patch)
tree08770bd2bb210374caad4b9cb4df5fa413b789ab /scripts
parent9ad39df2823ea11ac670dd3006ab2b8fcf73e6a8 (diff)
downloadguix-f8035d06f2031fb1bdf30eee82a1beb707bbe044.tar.gz
* Allow a name to be given to a system configuration through `--name
  NAME'.  E.g., on the losser Subversion server, I do `nix-switch --name 
  svn $(fix ...)' to atomically upgrade the server (the SVN server 
  uses the Apache and Subversion installations in /nix/var/nix/links/svn).

Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/nix-switch.in10
1 files changed, 7 insertions, 3 deletions
diff --git a/scripts/nix-switch.in b/scripts/nix-switch.in
index db0e96f3e7..427a803b2b 100755
--- a/scripts/nix-switch.in
+++ b/scripts/nix-switch.in
@@ -4,11 +4,15 @@ use strict;
 
 my $keep = 0;
 my $sourceroot = 0;
+my $name = "current";
 my $srcid;
 
-foreach my $arg (@ARGV) {
+my $argnr = 0;
+while ($argnr < scalar @ARGV) {
+    my $arg = $ARGV[$argnr++];
     if ($arg eq "--keep") { $keep = 1; }
     elsif ($arg eq "--source-root") { $sourceroot = 1; }
+    elsif ($arg eq "--name") { $name = $ARGV[$argnr++]; }
     elsif ($arg =~ /^([0-9a-z]{32})$/) { $srcid = $arg; }
     else { die "unknown argument `$arg'" };
 }
@@ -54,7 +58,7 @@ if ($sourceroot) {
     close ID;
 }
 
-my $current = "$linkdir/current";
+my $current = "$linkdir/$name";
 
 # Read the current generation so that we can delete it (if --keep
 # wasn't specified).
@@ -70,7 +74,7 @@ my $oldlink = readlink($current);
 
 print "switching $current to $link\n";
 
-my $tmplink = "$linkdir/new_current";
+my $tmplink = "$linkdir/.new_$name";
 symlink($link, $tmplink) or die "cannot create $tmplink";
 rename($tmplink, $current) or die "cannot rename $tmplink";