guix hash, guix download: Support base64 format.

* guix/scripts/download.scm (show-help, %options): Support "base64"
format.
* guix/scripts/hash.scm (show-help, %options): Likewise.
* tests/guix-hash.sh: Test it.
* doc/guix.texi (Invoking guix hash): Document it.
This commit is contained in:
Ludovic Courtès 2020-05-18 22:25:13 +02:00
parent 18ae1ec3ec
commit 0e4e9c8e76
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
4 changed files with 19 additions and 10 deletions

@ -9076,7 +9076,7 @@ Reference Manual}).
@itemx -f @var{fmt} @itemx -f @var{fmt}
Write the hash in the format specified by @var{fmt}. Write the hash in the format specified by @var{fmt}.
Supported formats: @code{nix-base32}, @code{base32}, @code{base16} Supported formats: @code{base64}, @code{nix-base32}, @code{base32}, @code{base16}
(@code{hex} and @code{hexadecimal} can be used as well). (@code{hex} and @code{hexadecimal} can be used as well).
If the @option{--format} option is not specified, @command{guix hash} If the @option{--format} option is not specified, @command{guix hash}

@ -23,6 +23,7 @@
#:use-module (gcrypt hash) #:use-module (gcrypt hash)
#:use-module (guix base16) #:use-module (guix base16)
#:use-module (guix base32) #:use-module (guix base32)
#:autoload (guix base64) (base64-encode)
#:use-module ((guix download) #:hide (url-fetch)) #:use-module ((guix download) #:hide (url-fetch))
#:use-module ((guix build download) #:use-module ((guix build download)
#:select (url-fetch)) #:select (url-fetch))
@ -84,10 +85,11 @@
(define (show-help) (define (show-help)
(display (G_ "Usage: guix download [OPTION] URL (display (G_ "Usage: guix download [OPTION] URL
Download the file at URL to the store or to the given file, and print its Download the file at URL to the store or to the given file, and print its
file name and the hash of its contents. file name and the hash of its contents.\n"))
(newline)
Supported formats: 'nix-base32' (default), 'base32', and 'base16' (display (G_ "\
('hex' and 'hexadecimal' can be used as well).\n")) Supported formats: 'base64', 'nix-base32' (default), 'base32',
and 'base16' ('hex' and 'hexadecimal' can be used as well).\n"))
(format #t (G_ " (format #t (G_ "
-f, --format=FMT write the hash in the given format")) -f, --format=FMT write the hash in the given format"))
(format #t (G_ " (format #t (G_ "
@ -111,6 +113,8 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16'
(lambda (opt name arg result) (lambda (opt name arg result)
(define fmt-proc (define fmt-proc
(match arg (match arg
("base64"
base64-encode)
("nix-base32" ("nix-base32"
bytevector->nix-base32-string) bytevector->nix-base32-string)
("base32" ("base32"

@ -20,12 +20,13 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix scripts hash) (define-module (guix scripts hash)
#:use-module (guix base32)
#:use-module (gcrypt hash) #:use-module (gcrypt hash)
#:use-module (guix serialization) #:use-module (guix serialization)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (guix scripts) #:use-module (guix scripts)
#:use-module (guix base16) #:use-module (guix base16)
#:use-module (guix base32)
#:autoload (guix base64) (base64-encode)
#:use-module (ice-9 binary-ports) #:use-module (ice-9 binary-ports)
#:use-module (rnrs files) #:use-module (rnrs files)
#:use-module (ice-9 match) #:use-module (ice-9 match)
@ -47,10 +48,11 @@
(define (show-help) (define (show-help)
(display (G_ "Usage: guix hash [OPTION] FILE (display (G_ "Usage: guix hash [OPTION] FILE
Return the cryptographic hash of FILE. Return the cryptographic hash of FILE.\n"))
(newline)
Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex' (display (G_ "\
and 'hexadecimal' can be used as well).\n")) Supported formats: 'base64', 'nix-base32' (default), 'base32',
and 'base16' ('hex' and 'hexadecimal' can be used as well).\n"))
(format #t (G_ " (format #t (G_ "
-x, --exclude-vcs exclude version control directories")) -x, --exclude-vcs exclude version control directories"))
(format #t (G_ " (format #t (G_ "
@ -83,6 +85,8 @@ and 'hexadecimal' can be used as well).\n"))
(lambda (opt name arg result) (lambda (opt name arg result)
(define fmt-proc (define fmt-proc
(match arg (match arg
("base64"
base64-encode)
("nix-base32" ("nix-base32"
bytevector->nix-base32-string) bytevector->nix-base32-string)
("base32" ("base32"

@ -32,6 +32,7 @@ test `guix hash -f nix-base32 /dev/null` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lz
test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
test `guix hash -f base32 /dev/null` = 4oymiquy7qobjgx36tejs35zeqt24qpemsnzgtfeswmrw6csxbkq test `guix hash -f base32 /dev/null` = 4oymiquy7qobjgx36tejs35zeqt24qpemsnzgtfeswmrw6csxbkq
test `guix hash -H sha512 -f hex /dev/null` = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e test `guix hash -H sha512 -f hex /dev/null` = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
test `guix hash -H sha1 -f base64 /dev/null` = "2jmj7l5rSw0yVb/vlWAYkK/YBwk="
if guix hash -H abcd1234 /dev/null; if guix hash -H abcd1234 /dev/null;
then false; else true; fi then false; else true; fi