mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-07-12 05:01:27 +02:00
53 lines
1.8 KiB
Text
53 lines
1.8 KiB
Text
#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 ign
|
|
local -a args
|
|
|
|
case $service in
|
|
*md5*) type=MD5 ;;
|
|
*b2*) type=BLAKE2 ;;
|
|
*sha*) type=SHA${service//[^0-9]/} ;;
|
|
esac
|
|
|
|
# General options
|
|
(( $#words > 2 )) && ign='!'
|
|
args=(
|
|
'(: -)--help[display help information]'
|
|
'(: -)--version[display version information]'
|
|
)
|
|
# Summing options
|
|
args=( ${ign}${^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]'
|
|
'(chk -z --zero)'{-z,--zero}'[end each output line with NUL and disable filename escaping]'
|
|
)
|
|
# 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+=(
|
|
+ operand
|
|
'*: :_files'
|
|
)
|
|
|
|
_arguments -s -S : $args
|