about summary refs log tree commit diff
path: root/Completion/Unix/Command/_mv
diff options
context:
space:
mode:
authorMatthew Martin <phy1729@gmail.com>2019-04-22 22:04:24 -0500
committerMatthew Martin <phy1729@gmail.com>2019-04-22 22:04:24 -0500
commita4f44972076ac86bde7f8b96c18b10807d580965 (patch)
treee0bbd37e3c0f5eda842a7d58955ae9a9157afe0e /Completion/Unix/Command/_mv
parent64d13738357c9b9c212adbe17f271716abbcf6ea (diff)
downloadzsh-a4f44972076ac86bde7f8b96c18b10807d580965.tar.gz
zsh-a4f44972076ac86bde7f8b96c18b10807d580965.tar.xz
zsh-a4f44972076ac86bde7f8b96c18b10807d580965.zip
44242: Completion: Use _pick_variant -b to detect builtins
Diffstat (limited to 'Completion/Unix/Command/_mv')
-rw-r--r--Completion/Unix/Command/_mv86
1 files changed, 49 insertions, 37 deletions
diff --git a/Completion/Unix/Command/_mv b/Completion/Unix/Command/_mv
index 3592efee6..2f0f844d4 100644
--- a/Completion/Unix/Command/_mv
+++ b/Completion/Unix/Command/_mv
@@ -1,42 +1,54 @@
 #compdef mv gmv
 
-local args
-if _pick_variant gnu=GNU unix --version; then
-  args=(
-    '(-b --backup -n --no-clobber)--backup=[make a backup of each existing destination file]: : _values "backup type"
-      {none,off}"[never make backups]"
-      {numbered,t}"[make numbered backups]"
-      {existing,nil}"[numbered backups, if they already exist]"
-      {simple,never}"[always make simple backups]"'
-    '(-b --backup -n --no-clobber)-b[make a backup of each existing destination file]'
-    '(-f --force -i --interactive -n --no-clobber)'{-f,--force}"[don't prompt before overwriting]"
-    '(-f --force -i --interactive -n --no-clobber)'{-i,--interactive}'[prompt before overwriting existing file]'
-    '--strip-trailing-slashes[remove any trailing slashes from each source argument]'
-    '(-S --suffix)'{-S+,--suffix=}'[specify the backup suffix]:backup suffix [~]'
-    '(-t --target-directory)'{-t+,--target-directory=}'[move all source arguments into specified directory]:directory:_directories'
-    '(-T --no-target-directory)'{-T,--no-target-directory}'[treat final argument as a normal file]'
-    '(-u --update)'{-u,--update}'[move only when destination file is older or missing]'
-    '(-v --verbose)'{-v,--verbose}'[show file names after they are moved]'
-    '(- *)--help[display usage information]'
-    '(- *)--version[display version information]'
-  )
-  [[ $OSTYPE = linux* ]] && args+=(
-    '(-Z --context)'{-Z,--context}'[set SELinux security context of destination file to default type]'
-  )
-else
-  local pattern arg
-  args=(
-    "(-i -n)-f[don't prompt before overwriting]"
-    '(-f -n)-i[prompt before overwriting existing file]'
-  )
-  for pattern arg in \
-    '(darwin|dragonfly|freebsd)*' "(-f -i)-n[don't overwrite existing file]" \
-    '(darwin|dragonfly|*bsd)*' '-v[show file names after they are moved]' \
-    '(dragonfly|freebsd)*' "-h[if target is a symlink to a directory, don't follow it]"
-  do
-    [[ $OSTYPE = $~pattern ]] && args+=( $arg )
-  done
-fi
+local args variant
+
+_pick_variant -r variant -b zsh gnu=GNU $OSTYPE --version
+case $variant; in
+  gnu)
+    args=(
+      '(-b --backup -n --no-clobber)--backup=[make a backup of each existing destination file]: : _values "backup type"
+        {none,off}"[never make backups]"
+        {numbered,t}"[make numbered backups]"
+        {existing,nil}"[numbered backups, if they already exist]"
+        {simple,never}"[always make simple backups]"'
+      '(-b --backup -n --no-clobber)-b[make a backup of each existing destination file]'
+      '(-f --force -i --interactive -n --no-clobber)'{-f,--force}"[don't prompt before overwriting]"
+      '(-f --force -i --interactive -n --no-clobber)'{-i,--interactive}'[prompt before overwriting existing file]'
+      '--strip-trailing-slashes[remove any trailing slashes from each source argument]'
+      '(-S --suffix)'{-S+,--suffix=}'[specify the backup suffix]:backup suffix [~]'
+      '(-t --target-directory)'{-t+,--target-directory=}'[move all source arguments into specified directory]:directory:_directories'
+      '(-T --no-target-directory)'{-T,--no-target-directory}'[treat final argument as a normal file]'
+      '(-u --update)'{-u,--update}'[move only when destination file is older or missing]'
+      '(-v --verbose)'{-v,--verbose}'[show file names after they are moved]'
+      '(- *)--help[display usage information]'
+      '(- *)--version[display version information]'
+    )
+    [[ $OSTYPE = linux* ]] && args+=(
+      '(-Z --context)'{-Z,--context}'[set SELinux security context of destination file to default type]'
+    )
+    ;;
+  *)
+    args=(
+      "(-i -n)-f[don't prompt before overwriting]"
+      '(-f -n)-i[prompt before overwriting existing file]'
+    )
+    ;|
+  darwin*|dragonfly*|freebsd*)
+    args+=(
+      "(-f -i)-n[don't overwrite existing file]"
+    )
+    ;|
+  darwin*|dragonfly*|*bsd*)
+    args+=(
+      '-v[show file names after they are moved]'
+    )
+    ;|
+  dragonfly*|freebsd*)
+    args+=(
+      "-h[if target is a symlink to a directory, don't follow it]"
+    )
+    ;;
+esac
 
 _arguments -s -S $args \
   '*:file:_files'