summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command/_md5sum
diff options
context:
space:
mode:
authorAxel Beckert <abe@deuxchevaux.org>2018-08-27 13:31:04 +0200
committerAxel Beckert <abe@deuxchevaux.org>2018-08-27 13:31:04 +0200
commit719a715614f2182a76b30ad27a327d70a86f34f1 (patch)
treea437eb29da8035bf7c2e30506c08fe6f15719871 /Completion/Unix/Command/_md5sum
parent7da8d19c224860ae4d6aa3f077fca7f734f20d88 (diff)
parentef61918398517473b9b594690a3be375f607cebe (diff)
downloadzsh-719a715614f2182a76b30ad27a327d70a86f34f1.tar.gz
zsh-719a715614f2182a76b30ad27a327d70a86f34f1.zip
Merge tag 'zsh-5.5.1-test-2' into debian
Test release: 5.5.1-test-2.
Diffstat (limited to 'Completion/Unix/Command/_md5sum')
-rw-r--r--Completion/Unix/Command/_md5sum63
1 files changed, 48 insertions, 15 deletions
diff --git a/Completion/Unix/Command/_md5sum b/Completion/Unix/Command/_md5sum
index 073e6beba..8e93fbbac 100644
--- a/Completion/Unix/Command/_md5sum
+++ b/Completion/Unix/Command/_md5sum
@@ -1,15 +1,48 @@
-#compdef md5sum gmd5sum
-
-_arguments -S \
- '(-b --binary)'{-b,--binary}'[read in binary mode]' \
- '(-c --check)'{-c,--check}'[read MD5 sums from the FILEs and check them]' \
- '--tag[create a BSD-style checksum]' \
- '(-t --text)'{-t,--text}'[read in text mode]' \
- "--ignore-missing[don't fail or report status for missing files]" \
- '(-q --quiet)'{-q,--quiet}"[don't print OK for each successfully verified file]" \
- '--status[no output, status code shows success]' \
- '--strict[exit non-zero for improperly formatted checksum lines]' \
- '(-w --warn)'{-w,--warn}'[warn about improperly formatted checksum lines]' \
- '(-)--help[display help and exit]' \
- '(-)--version[output version information and exit]' \
- '*:files:_files'
+#compdef md5sum gmd5sum b2sum gb2sum sha1sum gsha1sum sha224sum gsha224sum sha256sum gsha256sum sha384sum gsha384sum sha512sum gsha512sum
+
+# This function covers the various digest utilities (which are all essentially
+# the same program) from GNU Coreutils. It does NOT cover GNU `cksum` and `sum`,
+# nor the various BSD digest utilities like `md5` and `sha1` — see `_cksum` for
+# all of those. See `_shasum` for the `shasum` Perl script.
+#
+# @todo Support BusyBox?
+
+local type
+local -a args
+
+case $service in
+ *md5*) type=MD5 ;;
+ *b2*) type=BLAKE2 ;;
+ *sha*) type=SHA${service//[^0-9]/} ;;
+esac
+
+# General options
+args+=(
+ '(: -)--help[display help information]'
+ '(: -)--version[display version information]'
+)
+# Summing options
+args+=(
+ + sum
+ '(chk)--tag[create BSD-style checksums]'
+ '(chk -b -t --binary --text)'{-b,--binary}'[read in binary mode]'
+ '(chk -b -t --binary --text)'{-t,--text}'[read in text mode]'
+)
+# This is the only option that differs amongst all of these tools
+[[ $service == *b2* ]] && args+=(
+ '(chk -l --length)'{-l+,--length=}'[specify digest length]:digest length (bits, multiples of 8)'
+)
+# Verification options
+args+=(
+ + chk
+ '(sum -c --check)'{-c,--check}"[verify $type checksums from input files]"
+ "(sum)--ignore-missing[don't fail or report status for missing files]"
+ "(sum)--quiet[don't print OK for each verified file]"
+ '(sum -w --warn)--status[suppress all output]'
+ '(sum)--strict[exit non-zero for improperly formatted checksum lines]'
+ '(sum -w --status --warn)'{-w,--warn}'[warn about each improperly formatted checksum line]'
+)
+# Operands
+args+=( '*: :_files' )
+
+_arguments -s -S : $args