aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-10-28 21:28:18 +0200
committerLudovic Courtès <ludo@gnu.org>2016-10-28 22:30:17 +0200
commit343dc11702bf71876795b5d158cad860deca53a1 (patch)
treef76669e9a32c799380fb7246adddd3521f55a733
parent12b6c951cf5ca6055a22a2eec85665353f5510e5 (diff)
downloadpatches-343dc11702bf71876795b5d158cad860deca53a1.tar
patches-343dc11702bf71876795b5d158cad860deca53a1.tar.gz
guix hash: Interpret '-' as standard input.
* guix/scripts/hash.scm (guix-hash)[file-hash]: Special-case "-". * tests/guix-hash.sh: Add test. * doc/guix.texi (Invoking guix hash): Document it.
-rw-r--r--doc/guix.texi4
-rw-r--r--guix/scripts/hash.scm4
-rw-r--r--tests/guix-hash.sh3
3 files changed, 8 insertions, 3 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 1293b8bc1e..22d353c3b9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -4791,7 +4791,9 @@ The general syntax is:
guix hash @var{option} @var{file}
@end example
-@command{guix hash} has the following options:
+When @var{file} is @code{-} (a hyphen), @command{guix hash} computes the
+hash of data read from standard input. @command{guix hash} has the
+following options:
@table @code
diff --git a/guix/scripts/hash.scm b/guix/scripts/hash.scm
index b269ead50f..a339a8556b 100644
--- a/guix/scripts/hash.scm
+++ b/guix/scripts/hash.scm
@@ -139,7 +139,9 @@ and 'hexadecimal' can be used as well).\n"))
(write-file file port #:select? select?)
(force-output port)
(get-hash))
- (call-with-input-file file port-sha256))))
+ (match file
+ ("-" (port-sha256 (current-input-port)))
+ (_ (call-with-input-file file port-sha256))))))
(match args
((file)
diff --git a/tests/guix-hash.sh b/tests/guix-hash.sh
index 44213d51af..190c9e7f8a 100644
--- a/tests/guix-hash.sh
+++ b/tests/guix-hash.sh
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
-# Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Guix.
@@ -27,6 +27,7 @@ tmpdir="guix-hash-$$"
trap 'rm -rf "$tmpdir"' EXIT
test `guix hash /dev/null` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
+test `echo -n | guix hash -` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
test `guix hash -f nix-base32 /dev/null` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
test `guix hash -f base32 /dev/null` = 4oymiquy7qobjgx36tejs35zeqt24qpemsnzgtfeswmrw6csxbkq