diff options
author | dana <dana@dana.is> | 2018-01-04 11:48:02 -0600 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2018-01-05 15:29:17 +0100 |
commit | ae059841b0791195fbae04bafc2acc73058b48fc (patch) | |
tree | ba2e709e60b51bd2f28f98affd40812a5cd63c75 /Completion/Unix/Command/_install | |
parent | 48f01128be4d943e0c65a284b36e946e93bf2d05 (diff) | |
download | zsh-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/_install | 111 |
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 |