about summary refs log tree commit diff
path: root/Completion/Unix/Command/_install
diff options
context:
space:
mode:
authordana <dana@dana.is>2018-01-04 11:48:02 -0600
committerOliver Kiddle <opk@zsh.org>2018-01-05 15:29:17 +0100
commitae059841b0791195fbae04bafc2acc73058b48fc (patch)
treeba2e709e60b51bd2f28f98affd40812a5cd63c75 /Completion/Unix/Command/_install
parent48f01128be4d943e0c65a284b36e946e93bf2d05 (diff)
downloadzsh-ae059841b0791195fbae04bafc2acc73058b48fc.tar.gz
zsh-ae059841b0791195fbae04bafc2acc73058b48fc.tar.xz
zsh-ae059841b0791195fbae04bafc2acc73058b48fc.zip
42223: new completions for sublime text and some basic Unix utilities
Diffstat (limited to 'Completion/Unix/Command/_install')
-rw-r--r--Completion/Unix/Command/_install111
1 files changed, 111 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_install b/Completion/Unix/Command/_install
new file mode 100644
index 000000000..25d9dfcaa
--- /dev/null
+++ b/Completion/Unix/Command/_install
@@ -0,0 +1,111 @@
+#compdef install ginstall
+
+local curcontext="$curcontext" lx ret=1
+local -a line state state_descr common_args args tmp
+local -A opt_args val_args
+
+# These are *almost* common — non-GNU variants need to remove the long options
+common_args=(
+  '(--backup)-b[create backups of destination files]'
+  '(-C -c --compare)'{-C,--compare}'[copy files; do nothing if identical destination file exists]'
+  '(-C -c --compare)-c[copy files (default)]'
+  '(-d --directory)'{-d,--directory}'[create directories]'
+  '(-g --group)'{-g+,--group=}'[specify destination file group]: :_groups'
+  '(-m --mode)'{-m+,--mode=}'[specify destination file mode]: :_modes'
+  '(-o --owner)'{-o+,--owner=}'[specify destination file owner]: :_users'
+  '(-p --preserve-timestamps)'{-p,--preserve-timestamps}'[preserve modification times]'
+  '(-s --strip)'{-s,--strip}'[strip binaries]'
+  '(-v --verbose)'{-v,--verbose}'[output verbosely]'
+  '*: :_files'
+)
+
+if _pick_variant gnu='Free Soft' unix --version; then
+  # Hide Linux-specific options on non-Linux platforms
+  [[ $OSTYPE == linux* ]] || lx='!'
+  args+=(
+    $common_args
+    '(-b --backup)--backup=[create backup; optionally specify method]:: :->controls'
+    "${lx}--context=[like -Z, or specify SELinux security context to set]::SELinux security context"
+    '-D[create all leading destination path components]'
+    '(: -)--help[display help information]'
+    "${lx}--preserve-context[preserve SELinux security context]"
+    '--strip-program=[specify program used to strip binaries]:strip program:_files'
+    '(-S --suffix)'{-S+,--suffix=}'[specify backup suffix]:backup suffix'
+    '(-t --target-directory)'{-t+,--target-directory=}'[copy source to specified directory]: :_directories'
+    '(-T --no-target-directory)'{-T,--no-target-directory}'[treat destination as regular file]'
+    '(: -)--version[display version information]'
+    "${lx}-Z[set SELinux security context on destination files to default type]"
+  )
+
+else
+  args+=(
+    ${common_args##((#s)|*\))(\*|)--*}
+    '-B+[specify backup suffix for -b]:backup suffix'
+    '-f+[specify destination file flags]: :_flags'
+  )
+  [[ $OSTYPE == dragonfly* ]] && args+=(
+    '!-D+[no effect (compatibility with NetBSD)]: :_directories'
+    '-L+[use user/group database files from specified directory]: :_directories'
+    '-l[fall back to system files if user/group not found in -L directory]'
+  )
+  [[ $OSTYPE == netbsd* ]] && {
+    args+=(
+      '-a+[specify shell command to run on files after install]:shell command'
+      '-r[use temporary files to perform safe copy]'
+      '-S+[specify arguments to pass to strip program]:arguments to strip program'
+    )
+    # NetBSD has no -v for some reason
+    args=( ${args##((#s)|*\))(\*|)-v*} )
+  }
+  [[ $OSTYPE == openbsd* ]] && args+=(
+    '-D[create all leading destination path components]'
+    '-F[flush installed file contents to disk]'
+  )
+  [[ $OSTYPE == (darwin|dragonfly)* ]] && args+=(
+    '-M[disable use of mmap(2)]'
+  )
+  [[ $OSTYPE == (freebsd|netbsd)* ]] && args+=(
+    '-D+[specify destination directory used for metadata log]: :_directories'
+    '-h+[store digest in metadata log using specified method]: :->digests'
+    '(-C -c --compare)-l+[link files (rather than copy) using specified method]: :->linkflags'
+    '-M+[log mtree(8) metadata for installed files to specified file]:metadata log file:_files'
+    '+N+[use user/group database files from specified directory]: :_directories'
+    '-T+[specify mtree(8) tags to store in metadata log]:mtree(8) tags'
+    '-U[indicate that install is unprivileged]'
+  )
+  [[ $OSTYPE == netbsd* ]] || args+=(
+    '-S[use temporary files to perform safe copy]'
+  )
+fi
+
+_arguments -C -s -S : $args && ret=0
+
+case $state in
+  controls)
+    tmp=(
+      {none,off}':never make backups'
+      {numbered,t}':make numbered backups'
+      {existing,nil}':make numbered backups if they already exist'
+      # 'never' actually means 'always'...
+      {simple,never}':make simple backups'
+    )
+    _describe -t controls 'version control method' tmp && ret=0
+    ;;
+  digests)
+    tmp=( none md5 rmd160 sha1 sha256 sha512 )
+    [[ $OSTYPE == netbsd* ]] && tmp+=( sha384 )
+    _values 'digest method' $tmp && ret=0
+    ;;
+  linkflags)
+    tmp=(
+      'h[hard links]'
+      's[symlinks]'
+      'm[mixed (hard links for files on same file system)]'
+      'a[symlinks use absolute path]'
+      'r[symlinks use relative path]'
+    )
+    _values -S '' 'link flags' $tmp && ret=0
+    ;;
+esac
+
+return ret