summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command/_cp
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2015-05-03 16:53:47 +0200
committerOliver Kiddle <opk@zsh.org>2015-05-03 16:53:57 +0200
commitab7ec8d9851fea8230e1ccfba284c5bfaf457d88 (patch)
tree837b14c838b96728ebdb530eb20d35737ef8419b /Completion/Unix/Command/_cp
parentb29278c69a67089ba225a98478069eb3f32ab4e6 (diff)
downloadzsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.tar.gz
zsh-ab7ec8d9851fea8230e1ccfba284c5bfaf457d88.zip
35011: update completions for some common Unix commands,
in particular improving FreeBSD support
Diffstat (limited to 'Completion/Unix/Command/_cp')
-rw-r--r--Completion/Unix/Command/_cp73
1 files changed, 38 insertions, 35 deletions
diff --git a/Completion/Unix/Command/_cp b/Completion/Unix/Command/_cp
index 70ab0858e..4c4dea2e9 100644
--- a/Completion/Unix/Command/_cp
+++ b/Completion/Unix/Command/_cp
@@ -1,22 +1,23 @@
-#compdef cp
+#compdef cp gcp
if _pick_variant gnu=GNU unix --version; then
_arguments -s -S \
- '(-a --archive)'{-a,--archive}'[same as -dR --preserve=all]' \
+ '(-a --archive)'{-a,--archive}'[archive mode, same as -dR --preserve=all]' \
+ "--attributes-only[don't copy file data, just attributes]" \
'(-b --backup)-b[backup]' \
- '(-b --backup)--backup=[backup]:method:(none off numbered t existing nil simple never)' \
+ '(-b --backup)--backup=-[backup each destination file]::method:(none off numbered t existing nil simple never)' \
'--copy-contents[copy contents of special files when recursive]' \
'-d[same as --no-dereference --preserve=links]' \
'(-f --force)'{-f,--force}'[remove and retry for destinations that cannot be opened]' \
- '(-i --interactive)'{-i,--interactive}'[prompt before overwrite]' \
+ '(-i --interactive -n --no-clobber)'{-i,--interactive}'[prompt before overwrite]' \
'-H[follow command-line symbolic links]' \
'(-l --link)'{-l,--link}'[link files instead of copying]' \
'(-L --dereference)'{-L,--dereference}'[always follow symbolic links]' \
- '(-n --no-clobber)'{-n,--no-clobber}'[do not overwrite an existing file]' \
+ (-n --no-clobber -i --interactive){-n,--no-clobber}"[don't overwrite an existing file]" \
'(-P --no-dereference)'{-P,--no-dereference}'[never follow symbolic links]' \
'-p[same as --preserve=mode,ownership,timestamps]' \
- '--preserve=[preserve specified attributes]:attributes to preserve:_values -s , mode timestamps ownership links context xattr all' \
- '--no-preserve=[don'\''t preserve specified attributes]:attributes not to preserve:_values -s , mode timestamps ownership links context xattr all' \
+ '--preserve=-[preserve specified attributes]:: :_values -s , attribute mode timestamps ownership links context xattr all' \
+ "--no-preserve=[don't preserve specified attributes]: :_values -s , attribute mode timestamps ownership links context xattr all" \
'--parents[append source path to target directory]' \
'(-R -r --recursive)'{-R,-r,--recursive}'[copy directories recursively]' \
'--reflink=-[control clone/CoW copies]::when to perform a lightweight copy:(always auto)' \
@@ -24,39 +25,41 @@ if _pick_variant gnu=GNU unix --version; then
'--sparse=[control creation of sparse files]:when to create sparse files:(auto always never)' \
'--strip-trailing-slashes[remove any trailing slashes from each source argument]' \
'(-s --symbolic-link)'{-s,--symbolic-link}'[make symbolic links instead of copies of non-directories]' \
- '(-S --suffix)'{-S,--suffix=}'[override the usual backup suffix]:backup suffix:' \
- '(-t --target-directory)'{-t,--target-directory=}'[copy all source arguments into target directory]:target directory:_files -/' \
+ '(-S --suffix)'{-S+,--suffix=}'[override the usual backup suffix]:backup suffix' \
+ '(-t --target-directory)'{-t+,--target-directory=}'[copy all source arguments into target directory]:target directory:_files -/' \
'(-T --no-target-directory)'{-T,--no-target-directory}'[treat DEST as a normal file]' \
'(-u --update)'{-u,--update}'[copy only when source is newer than destination or destination is missing]' \
'(-v --verbose)'{-v,--verbose}'[explain what is being done]' \
'(-x --one-file-system)'{-x,--one-file-system}'[stay on this file system]' \
- '--help' \
- '--version' \
+ '(--context)-Z[set destination SELinux security context]' \
+ '(-Z)--context=-[set destination SELinux security context]::context' \
+ '(- *)--help' '(- *)--version' \
'*:file or directory:_files'
-
-elif [[ "$OSTYPE" == darwin* ]]; then
- _arguments -s -S \
- '-R[copy directories recursively]' \
- '(-L -P)-H[with -R, follow symlinks on the command line]' \
- '(-H -P)-L[with -R, follow all symlinks]' \
- '(-H -L)-P[with -R, do not follow symlinks (default)]' \
- '(-i -n)-f[force overwriting existing file]' \
- '(-f -n)-i[confirm before overwriting existing file]' \
- '(-f -i)-n[do not overwrite existing file]' \
- '-a[same as -pRP]' \
- '-p[preserve timestamps, mode, owner, flags, ACLs, and Extended Attributes]' \
- '-v[show file names as they are copied]' \
- '-X[do not copy Extended Attributes or resource forks]' \
- '(-)*:file or directory:_files'
-
-else # assume POSIX
- _arguments -s -S \
+else
+ local pattern arg args
+ args=(
+ '(-L -P)-H[follow symlinks on the command line in recursive mode]'
+ '(-H -P)-L[follow all symlinks in recursive mode]'
+ '(-H -L)-P[do not follow symlinks in recursive mode (default)]'
+ '(-i -n)-f[force overwriting existing file]'
+ '(-f -n)-i[confirm before overwriting existing file]'
+ '-p[preserve timestamps, mode, owner, flags, ACLs, and extended attributes]'
'-R[copy directories recursively]' \
- '(-L -P)-H[with -R, follow symlinks on the command line]' \
- '(-H -P)-L[with -R, follow all symlinks]' \
- '(-H -L)-P[do not follow symlinks]' \
- '(-i)-f[force overwriting existing file]' \
- '(-f)-i[confirm before overwriting existing file]' \
- '-p[preserve timestamps, mode, and owner]' \
'(-)*:file or directory:_files'
+ )
+ for pattern arg in \
+ '(aix|hpux|irix|solaris)*' '-r[copy directories recursively]' \
+ 'solaris2.<9->*' '-@[preserve extended attributes]' \
+ 'solaris2.<11->*' '-/[preserve extended attributes and extended system attributes]' \
+ '(darwin|dragonfly|freebsd)*' "(-f -i)-n[don't overwrite existing file]" \
+ 'netbsd*' "-N[don't copy file flags]" \
+ '(darwin|dragonfly|freebsd|netbsd)*' '-a[archive mode, same as -RpP]' \
+ '(dragonfly|freebsd)*' '-l[link files instead of copying]' \
+ '(darwin|dragonfly|freebsd|netbsd)*' '-v[show file names as they are copied]' \
+ 'darwin*' "-X[don't copy extended attributes or resource forks]" \
+ '(dragonfly|freebsd)*' "-x[don't traverse file systems]"
+ do
+ [[ $OSTYPE = $~pattern ]] && args+=( $arg )
+ done
+ _arguments -s -S $args
fi