diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-08-06T14·48+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-08-06T14·48+0000 |
commit | f8035d06f2031fb1bdf30eee82a1beb707bbe044 (patch) | |
tree | 08770bd2bb210374caad4b9cb4df5fa413b789ab | |
parent | 9ad39df2823ea11ac670dd3006ab2b8fcf73e6a8 (diff) |
* 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).
-rwxr-xr-x | scripts/nix-switch.in | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/scripts/nix-switch.in b/scripts/nix-switch.in index db0e96f3e7e8..427a803b2b17 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"; |