diff options
Diffstat (limited to 'Completion/User/_compress')
-rw-r--r-- | Completion/User/_compress | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/Completion/User/_compress b/Completion/User/_compress index 860aeb5b0..288bb1645 100644 --- a/Completion/User/_compress +++ b/Completion/User/_compress @@ -1,3 +1,45 @@ -#defcomp compress +#compdef compress uncompress -_files -g '*~*.Z' +local expl state line bits common_args1 common_args2 decompress +typeset -A opt_args +bits=( {9..16} ) + +common_args1=( \ + '-n[omit compressed file header from compressed file]' \ + '-V[display current version and compile options]' \ + '*:files:->files') +common_args2=( \ + '-c[write on standard output]' \ + '(-F)-f[force overwrite]' \ + '(-f)-F[force overwrite]' \ + '(-v)-q[suppress display of compression statistics]' \ + '(-q)-v[display compression statistics]' \ + "${common_args1[@]}" ) + +case "${words[1]:t}" in + compress) + _arguments -s \ + "-b[specify maximum number of bits used to replace common substring]:bits:(${bits[*]})" \ + '-C[produce output compatible with BSD 2.0]' \ + '(-b -C)-d[decompress]' \ + "${common_args2[@]}" + ;; + uncompress) + _arguments -s "${common_args2[@]}" + decompress=yes + ;; + zcat) + _arguments -s "${common_args1[@]}" + decompress=yes + ;; +esac + +if [[ "$state" = files ]]; then + if [[ -z "$decompress" ]] || (( $+opt_args[-d] )); then + _description files expl 'file to compress' + _files "$expl[@]" -g '*~*.Z' + else + _description files expl 'compressed file' + _files "$expl[@]" -g '*.Z' + fi +fi |