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:
parent
594f2ff06e
commit
64ef1eddfd
10 changed files with 485 additions and 81 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue