1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-05-19 14:36:04 +02:00
zsh/Completion/Unix/Command/_xz

88 lines
4.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#compdef xz unxz xzcat=unxz lzma=xz unlzma=unxz lzcat=unxz -redirect-,<,unxz=unxz -redirect-,>,xz=unxz -redirect-,<,xz=xz -value-,XZ_OPT,-default- -value-,XZ_DEFAULTS,-default-
local decompress files expl state line curcontext="$curcontext" ret=1
typeset -A opt_args
files=( '(--files --files0)*:files:->files' )
case "$service" in
*XZ_*)
compset -q
words=( fake "$words[@]" )
(( CURRENT++ ))
files=()
;&
xz) decompress=no;&
unxz) _arguments -C -s -S "$files[@]" \
'--robot[use machine-parsable messages]' \
+ 'common' \
'(I -k --keep)'{-k,--keep}"[keep (don't delete) input files]" \
'(I -f --force)'{-f,--force}'[force overwrite]' \
'(I -c --stdout)'{-c,--stdout}'[write on standard output]' \
'(I)*'{-q,--quiet}'[suppress all warnings]' \
'(I)*'{-v,--verbose}'[verbose mode]' \
'(I * --files --files0)--files=-[read list of files to process from file]::file:_files' \
'(I * --files --files0)--files0=-[read null terminated list of files to process from file]::file:_files' \
'(I -F --format)'{-F+,--format=}'[specify file format]:format:(auto xz lzma lzip raw)' \
'(I -T --threads)'{-T+,--threads=}'[use specified number of threads]:threads [1]' \
'(I -M --memlimit --memory)'{-M+,--memlimit=,--memory=}'[set memory usage limit]: :_numbers -u bytes "memory limit" KiB MiB GiB %\:percentage\ of\ available\ RAM' \
'(I)--no-adjust[give error if settings exceed memory limit]' \
'(I -Q --no-warn)'{-Q,--no-warn}'[make warnings not affect exit status]' \
+ 'comp' \
"(I decomp)"{-z,--compress}'[compress]' \
'(I decomp -e --extreme)'{-e,--extreme}'[try to improve compression ratio by using more CPU time]' \
'(I decomp -S --suffix)'{-S+,--suffix=}'[use specified suffix for compressed files]:suffix [.xz]' \
'(I decomp -C --check)'{-C+,--check=}'[integrity check type]:check type:(none crc32 crc64 sha256)' \
'(I decomp)--block-size=[start a new .xz block after specified bytes of input]:size' \
'(I decomp)--block-list=[start a new .xz block after specified intervals of uncompressed data]:size' \
'(I decomp)--flush-timeout=[specify maximum time between flushing of output]:time (ms) [0]' \
'(I decomp)--memlimit-compress=[set memory usage limit for compression]: :_numbers -u bytes "memory limit" KiB MiB GiB %\:percentage\ of\ available\ RAM' \
+ 'decomp' \
'(I comp level filters)'{-d,--decompress}'[decompress]' \
'(I comp level filters)'{-t,--test}'[test compressed file integrity]' \
'(I comp level filters)'{-l,--list}'[list information about .xz files]' \
"(I comp level filters)--ignore-check[don't verify integrity when decompressing]" \
'(I comp level filters)--single-stream[decompress only the first stream]' \
"(I comp level filters)--no-sparse[don't create sparse files when decompressing]" \
'(I comp level filters)--memlimit-decompress=[set memory usage limit for decompression]: :_numbers -u bytes "memory limit" KiB MiB GiB %\:percentage\ of\ available\ RAM' \
'(I comp level filters)--memlimit-mt-decompress=[set memory usage limit for multithreaded decompression]: :_numbers -u bytes "memory limit" KiB MiB GiB %\:percentage\ of\ available\ RAM' \
+ '(I)' \
'(* comp decomp level filters common)--info-memory[display amount of RAM and memory usage limits]' \
'(- *)'{-h,--help}'[display help message]' \
'(- *)'{-H,--long-help}'[display the long help (lists also the advanced options)]' \
'(* comp decomp level filters common)'{-V,--version}'[display version number]' \
+ '(level)' \
'(I filters decomp)-'{-best,-fast,1,2,3,4,5,6,7,8,9} \
+ filters \
'(I level decomp --extreme)'--{x86,powerpc,ia64,arm,armthumb,arm64,sparc}=-'[add a branch/call/jump filter]::option:->bcj-options' \
'(I level decomp --extreme)'--lzma{1,2}=-'[add lzma filter]::option:->lzma-options' \
'(I level decomp --extreme)--delta=-[add delta filter]::option:->delta-options' && ret=0
;;
esac
case $state in
files)
(( $+opt_args[-z] || $+opt_args[--compress] )) && decompress=no
[[ -n ${(k)opt_args[(i)decomp*]} ]] && unset decompress
if [[ -z "$decompress" ]]; then
_description files expl 'compressed file'
_files "$expl[@]" -g '*.(xz|txz||lz|lzma|tlz)(-.)' && return
else
_description files expl 'file to compress'
_files "$expl[@]" -g '^*.(xz|txz|lz|lzma|tlz)(-.)' && return
fi
;;
lzma-options)
_values -s , options 'preset:preset' 'dict:size' 'lc:context bits' \
'lp:position bits' 'pb:position bites' 'mf:matchfinder:(hc3 hc4 bt2 bt3 bt4)' \
'mode:mode:(fast normal)' 'nice:length' 'depth:depth' && ret=0
;;
bcj-options)
_values options 'start:offset' && return
;;
delta-options)
_values options 'dist:distance' && return
;;
esac
return ret