1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-28 17:10:59 +01:00

42931: completion for several utilities especially for checksums across a variety of systems

This commit is contained in:
dana 2018-06-04 10:04:27 -05:00 committed by Oliver Kiddle
parent 594f2ff06e
commit 64ef1eddfd
10 changed files with 485 additions and 81 deletions

View file

@ -1,15 +1,48 @@
#compdef md5sum gmd5sum
#compdef md5sum gmd5sum b2sum gb2sum sha1sum gsha1sum sha224sum gsha224sum sha256sum gsha256sum sha384sum gsha384sum sha512sum gsha512sum
_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'
# 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