diff options
author | 宋文武 <iyzsong@member.fsf.org> | 2017-08-19 20:41:44 +0800 |
---|---|---|
committer | 宋文武 <iyzsong@member.fsf.org> | 2017-08-20 20:55:45 +0800 |
commit | a02967d77af03d6468e25d6e26dbea0db919ce96 (patch) | |
tree | 66ca3cdddb4ccbb37a0f053fcbd9af95ca1f0e30 | |
parent | 6d7d9d9507484773eff697a01f422ea984936373 (diff) | |
download | guix-a02967d77af03d6468e25d6e26dbea0db919ce96.tar guix-a02967d77af03d6468e25d6e26dbea0db919ce96.tar.gz |
guix download: Support retrieving local file without the URI scheme.
* guix/scripts/download.scm (guix-download): Treat the URL argument as a local
file path when it fails on 'string->uri'. Call 'fetch' with the processed
'uri' instead of the original URL argument.
* tests/guix-download.sh: Adjust accordingly.
-rw-r--r-- | guix/scripts/download.scm | 5 | ||||
-rw-r--r-- | tests/guix-download.sh | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm index bb3dc76741..f40213be33 100644 --- a/guix/scripts/download.scm +++ b/guix/scripts/download.scm @@ -143,12 +143,15 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (arg (or (assq-ref opts 'argument) (leave (G_ "no download URI was specified~%")))) (uri (or (string->uri arg) + (false-if-exception + (string->uri + (string-append "file://" (canonicalize-path arg)))) (leave (G_ "~a: failed to parse URI~%") arg))) (fetch (assq-ref opts 'download-proc)) (path (parameterize ((current-terminal-columns (terminal-columns))) - (fetch arg + (fetch (uri->string uri) #:verify-certificate? (assq-ref opts 'verify-certificate?)))) (hash (call-with-input-file diff --git a/tests/guix-download.sh b/tests/guix-download.sh index ebc853c7fa..30f55fbe2b 100644 --- a/tests/guix-download.sh +++ b/tests/guix-download.sh @@ -29,12 +29,15 @@ then false; else true; fi if guix download unknown://some/where; then false; else true; fi -if guix download not/a/uri; +if guix download /does-not-exist then false; else true; fi # This one should succeed. guix download "file://$abs_top_srcdir/README" +# And this one, without the URI scheme. +guix download "$abs_top_srcdir/README" + # This one too, even if it cannot talk to the daemon. output="t-download-$$" trap 'rm -f "$output"' EXIT |