about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Unix/Command/_compress48
1 files changed, 48 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_compress b/Completion/Unix/Command/_compress
new file mode 100644
index 000000000..9ba8c8e15
--- /dev/null
+++ b/Completion/Unix/Command/_compress
@@ -0,0 +1,48 @@
+#compdef compress uncompress
+
+local expl state line bits common_args1 common_args2 decompress
+local curcontext="$curcontext"
+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 "$service" in
+  compress)
+    _arguments -C -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[@]}" && return 0
+  ;;
+  uncompress)
+    _arguments -C -s "${common_args2[@]}" && return 0
+    decompress=yes
+  ;;
+  zcat)
+    _arguments -C -s "${common_args1[@]}" && return 0
+    decompress=yes
+  ;;
+esac
+
+if [[ "$state" = files ]]; then
+  if [[ -z "$decompress" ]] || (( $+opt_args[-d] )); then
+    _description files expl 'file to compress'
+    _files "$expl[@]" -g '*~*.Z' && return 0
+  else
+    _description files expl 'compressed file'
+    _files "$expl[@]" -g '*.Z' && return 0
+  fi
+fi
+
+return 1