~ruther/guix-local

a02967d77af03d6468e25d6e26dbea0db919ce96 — 宋文武 8 years ago 6d7d9d9
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.
2 files changed, 8 insertions(+), 2 deletions(-)

M guix/scripts/download.scm
M tests/guix-download.sh
M guix/scripts/download.scm => guix/scripts/download.scm +4 -1
@@ 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

M tests/guix-download.sh => tests/guix-download.sh +4 -1
@@ 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