aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-10-23 18:04:00 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-10-23 18:04:11 +0200
commita28b4445a4eb8108dfc028083d3939d5f3a42685 (patch)
treebbf989d956ab6b3ea2830d75c79d5adc69c7664f
parent2980d1fba97069805c3649c5d99d0356bce6c303 (diff)
nix-prefetch-url: Improve option handling
-rw-r--r--doc/manual/nix-hash.xml5
-rw-r--r--doc/manual/nix-prefetch-url.xml24
-rwxr-xr-xscripts/nix-prefetch-url.in23
3 files changed, 42 insertions, 10 deletions
diff --git a/doc/manual/nix-hash.xml b/doc/manual/nix-hash.xml
index 007fc5410..af4e361ff 100644
--- a/doc/manual/nix-hash.xml
+++ b/doc/manual/nix-hash.xml
@@ -91,8 +91,9 @@ cryptographic hash as <literal>nix-store --dump
<varlistentry><term><option>--type</option> <replaceable>hashAlgo</replaceable></term>
- <listitem><para>Specify a cryptographic hash, which can be one of
- <literal>md5</literal>, <literal>sha1</literal>, and
+ <listitem><para>Use the specified cryptographic hash algorithm,
+ which can be one of <literal>md5</literal>,
+ <literal>sha1</literal>, and
<literal>sha256</literal>.</para></listitem>
</varlistentry>
diff --git a/doc/manual/nix-prefetch-url.xml b/doc/manual/nix-prefetch-url.xml
index 0d953e946..c416e675b 100644
--- a/doc/manual/nix-prefetch-url.xml
+++ b/doc/manual/nix-prefetch-url.xml
@@ -18,6 +18,7 @@
<refsynopsisdiv>
<cmdsynopsis>
<command>nix-prefetch-url</command>
+ <arg><option>--type</option> <replaceable>hashAlgo</replaceable></arg>
<arg choice='plain'><replaceable>url</replaceable></arg>
<arg><replaceable>hash</replaceable></arg>
</cmdsynopsis>
@@ -45,11 +46,6 @@ download it again when you build your Nix expression. Since
as <command>nix-prefetch-url</command>, the redundant download can be
avoided.</para>
-<para>The environment variable <envar>NIX_HASH_ALGO</envar> specifies
-which hash algorithm to use. It can be either <literal>md5</literal>,
-<literal>sha1</literal>, or <literal>sha256</literal>. The default is
-<literal>sha256</literal>.</para>
-
<para>If <replaceable>hash</replaceable> is specified, then a download
is not performed if the Nix store already contains a file with the
same hash and base name. Otherwise, the file is downloaded, and an
@@ -63,6 +59,24 @@ of the downloaded file in the Nix store is also printed.</para>
</refsection>
+<refsection><title>Options</title>
+
+<variablelist>
+
+ <varlistentry><term><option>--type</option> <replaceable>hashAlgo</replaceable></term>
+
+ <listitem><para>Use the specified cryptographic hash algorithm,
+ which can be one of <literal>md5</literal>,
+ <literal>sha1</literal>, and
+ <literal>sha256</literal>.</para></listitem>
+
+ </varlistentry>
+
+</variablelist>
+
+</refsection>
+
+
<refsection><title>Examples</title>
<screen>
diff --git a/scripts/nix-prefetch-url.in b/scripts/nix-prefetch-url.in
index 64102e8ae..bcd9197bc 100755
--- a/scripts/nix-prefetch-url.in
+++ b/scripts/nix-prefetch-url.in
@@ -8,11 +8,28 @@ use Nix::Store;
use Nix::Config;
use Nix::Utils;
-my $url = shift;
-my $expHash = shift;
-my $hashType = $ENV{'NIX_HASH_ALGO'} || "sha256";
+my $hashType = $ENV{'NIX_HASH_ALGO'} || "sha256"; # obsolete
my $cacheDir = $ENV{'NIX_DOWNLOAD_CACHE'};
+my @args;
+my $arg;
+while ($arg = shift) {
+ if ($arg eq "--help") {
+ exec "man nix-prefetch-url" or die;
+ } elsif ($arg eq "--type") {
+ $hashType = shift;
+ die "$0: `$arg' requires an argument\n" unless defined $hashType;
+ } elsif (substr($arg, 0, 1) eq "-") {
+ die "$0: unknown flag `$arg'\n";
+ } else {
+ push @args, $arg;
+ }
+}
+
+my $url = $args[0];
+my $expHash = $args[1];
+
+
if (!defined $url || $url eq "") {
print STDERR <<EOF
Usage: nix-prefetch-url URL [EXPECTED-HASH]