diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-09-20 15:04:04 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-09-20 15:04:04 +0000 |
commit | a060adf165e24a585da0301e88ad41e674f3e9db (patch) | |
tree | 6558ef430fb13b36bc0e3b1090833a610b5bacd3 /scripts/nix-push.in | |
parent | 7dd342e482b230d0042f8f2dee6ccb44232a3d3b (diff) |
* Use paths, not strings, when calling the function that generates
NARs. Fixes the impurity of nix-push (NIX-21).
* Better help.
Diffstat (limited to 'scripts/nix-push.in')
-rw-r--r-- | scripts/nix-push.in | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/scripts/nix-push.in b/scripts/nix-push.in index c27e813b4..283d78a61 100644 --- a/scripts/nix-push.in +++ b/scripts/nix-push.in @@ -37,8 +37,22 @@ my $archivesPutURL; my $archivesGetURL; my $manifestPutURL; +sub showSyntax { + print STDERR <<EOF +Usage: nix-push --copy ARCHIVES_DIR MANIFEST_FILE PATHS... + or: nix-push ARCHIVES_PUT_URL ARCHIVES_GET_URL MANIFEST_PUT_URL PATHS... + +`nix-push' copies or uploads the closure of PATHS to the given +destination. +EOF + ; # ` + exit 1; +} + +showSyntax if scalar @ARGV < 1; + if ($ARGV[0] eq "--copy") { - die "syntax: nix-push --copy ARCHIVES_DIR MANIFEST_FILE PATHS...\n" if scalar @ARGV < 3; + showSyntax if scalar @ARGV < 3; $localCopy = 1; shift @ARGV; $localArchivesDir = shift @ARGV; @@ -52,8 +66,7 @@ if ($ARGV[0] eq "--copy") { } } else { - die "syntax: nix-push ARCHIVES_PUT_URL ARCHIVES_GET_URL " . - "MANIFEST_PUT_URL PATHS...\n" if scalar @ARGV < 3; + showSyntax if scalar @ARGV < 3; $localCopy = 0; $archivesPutURL = shift @ARGV; $archivesGetURL = shift @ARGV; @@ -95,15 +108,9 @@ foreach my $storePath (@storePaths) { die unless ($storePath =~ /\/[0-9a-z]{32}.*$/); # Construct a Nix expression that creates a Nix archive. - # !!! the string reference to `$storePath' is impure! We could - # also pass it as a normal input, but that would cause it to be - # copied, and its name would be expanded (e.g., - # /nix/store/HASH1-HASH2-symname). nix-instantiate should be - # smart enough to add store paths as direct references of the Nix - # expression. my $nixexpr = "((import $dataDir/nix/corepkgs/nar/nar.nix) " . - "{storePath = \"$storePath\"; system = \"@system@\"; hashAlgo = \"$hashAlgo\";}) "; + "{storePath = $storePath; system = \"@system@\"; hashAlgo = \"$hashAlgo\";}) "; print NIX $nixexpr; } |