aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/nix-push.in75
1 files changed, 24 insertions, 51 deletions
diff --git a/scripts/nix-push.in b/scripts/nix-push.in
index 35ad43d28..45a0695a6 100755
--- a/scripts/nix-push.in
+++ b/scripts/nix-push.in
@@ -24,22 +24,15 @@ $curl = "$curl $extraCurlFlags" if defined $extraCurlFlags;
# Parse the command line.
my $compressionType = "xz";
my $force = 0;
-
-my $localCopy;
-my $localArchivesDir;
-
-my $archivesPutURL;
-my $archivesGetURL;
-
+my $destDir;
my @roots;
sub showSyntax {
print STDERR <<EOF
-Usage: nix-push --copy ARCHIVES_DIR PATHS...
- or: nix-push --upload ARCHIVES_PUT_URL ARCHIVES_GET_URL PATHS...
+Usage: nix-push --dest DIR PATHS...
-`nix-push' copies or uploads the closure of PATHS to the given
-destination.
+`nix-push' packs the closure of PATHS into a set of NAR archives
+stored in DIR.
EOF
; # `
exit 1;
@@ -54,18 +47,11 @@ for (my $n = 0; $n < scalar @ARGV; $n++) {
$compressionType = "bzip2";
} elsif ($arg eq "--force") {
$force = 1;
- } elsif ($arg eq "--copy") {
+ } elsif ($arg eq "--dest") {
$n++;
die "$0: `$arg' requires an argument\n" unless $n < scalar @ARGV;
- $localCopy = 1;
- $localArchivesDir = $ARGV[$n];
- mkpath($localArchivesDir, 0, 0755);
- } elsif ($arg eq "--upload") {
- die "$0: `$arg' requires two arguments\n" unless $n + 2 < scalar @ARGV;
- $localCopy = 0;
- $archivesPutURL = $ARGV[$n + 1];
- $archivesGetURL = $ARGV[$n + 2];
- $n++;
+ $destDir = $ARGV[$n];
+ mkpath($destDir, 0, 0755);
} elsif (substr($arg, 0, 1) eq "-") {
showSyntax;
} else {
@@ -73,7 +59,7 @@ for (my $n = 0; $n < scalar @ARGV; $n++) {
}
}
-showSyntax if !defined $localCopy;
+showSyntax if !defined $destDir;
# From the given store paths, determine the set of requisite store
@@ -134,8 +120,8 @@ while (<READ>) {
close READ or die "nix-build failed: $?";
-# Upload the archives and the corresponding info files.
-print STDERR "uploading/copying archives...\n";
+# Copy the archives and the corresponding info files.
+print STDERR "copying archives...\n";
my $totalNarSize = 0;
my $totalCompressedSize = 0;
@@ -183,24 +169,15 @@ for (my $n = 0; $n < scalar @storePaths; $n++) {
printf STDERR "%s [%.2f MiB, %.1f%%]\n", $storePath,
$compressedSize / (1024 * 1024), $compressedSize / $narSize * 100;
- # Upload the compressed NAR.
- if ($localCopy) {
- my $dst = "$localArchivesDir/$narName";
- if (! -f $dst) {
- my $tmp = "$localArchivesDir/.tmp.$$.$narName";
- copy($narFile, $tmp) or die "cannot copy $narFile to $tmp: $!\n";
- rename($tmp, $dst) or die "cannot rename $tmp to $dst: $!\n";
- }
- } else {
- die "unimplemented";
- #if (!archiveExists("$basename")) {
- # system("$curl --show-error --upload-file " .
- # "'$narArchive' '$archivesPutURL/$basename' > /dev/null") == 0 or
- # die "curl failed on $narArchive: $?";
- #}
+ # Copy the compressed NAR.
+ my $dst = "$destDir/$narName";
+ if (! -f $dst) {
+ my $tmp = "$destDir/.tmp.$$.$narName";
+ copy($narFile, $tmp) or die "cannot copy $narFile to $tmp: $!\n";
+ rename($tmp, $dst) or die "cannot rename $tmp to $dst: $!\n";
}
- # Upload the info file.
+ # Write the info file.
my $info;
$info .= "StorePath: $storePath\n";
$info .= "URL: $narName\n";
@@ -220,17 +197,13 @@ for (my $n = 0; $n < scalar @storePaths; $n++) {
my $pathHash = substr(basename($storePath), 0, 32);
- if ($localCopy) {
- my $dst = "$localArchivesDir/$pathHash.narinfo";
- if ($force || ! -f $dst) {
- my $tmp = "$localArchivesDir/.tmp.$$.$pathHash.narinfo";
- open INFO, ">$tmp" or die;
- print INFO "$info" or die;
- close INFO or die;
- rename($tmp, $dst) or die "cannot rename $tmp to $dst: $!\n";
- }
- } else {
- die "unimplemented";
+ $dst = "$destDir/$pathHash.narinfo";
+ if ($force || ! -f $dst) {
+ my $tmp = "$destDir/.tmp.$$.$pathHash.narinfo";
+ open INFO, ">$tmp" or die;
+ print INFO "$info" or die;
+ close INFO or die;
+ rename($tmp, $dst) or die "cannot rename $tmp to $dst: $!\n";
}
}