diff options
Diffstat (limited to 'Completion/Unix/Command/_mktemp')
-rw-r--r-- | Completion/Unix/Command/_mktemp | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/Completion/Unix/Command/_mktemp b/Completion/Unix/Command/_mktemp index 03fc89e36..0f66d744e 100644 --- a/Completion/Unix/Command/_mktemp +++ b/Completion/Unix/Command/_mktemp @@ -1,43 +1,45 @@ #compdef mktemp gmktemp local variant -local args +local -a args -_pick_variant -r variant busybox=BusyBox gnu='Free Soft' unix --version +_pick_variant -r variant busybox=BusyBox gnu='Free Soft' $OSTYPE --version args=( '(-d --directory)'{-d,--directory}'[make directory instead of file]' - '(: -)--help[display help information]' - '(-p --tmpdir)'{-p+,--tmpdir=}'[make relative to specified directory]: :_directories' '(-q --quiet)'{-q,--quiet}'[suppress error messages]' - '--suffix=[append specified suffix to template]:template suffix' - '-t[interpret template as single path component relative to temp dir]' '(-u --dry-run)'{-u,--dry-run}'[print file name only]' - '(: -)'{-V,--version}'[display version information]' - '1: :_guard "^-*" "template name"' ) -# Non-GNU variants don't support long options (except BusyBox's --help) -if [[ $variant == *busybox* ]]; then # See also: _busybox - args=( ${args:#((#s)|*\))(\*|)--^help*} ) -elif [[ $variant != gnu ]]; then - args=( ${args:#((#s)|*\))(\*|)--*} ) -fi - -[[ $variant == gnu ]] || { - # BusyBox, OpenBSD, and Solaris have -p, but -t doesn't take an argument - if [[ $variant == *busybox* ]] || [[ $OSTYPE == (openbsd|solaris)* ]]; then - args=( ${args:#((#s)|*\))(\*|)-t*} ) - args+=( '-t[generate template relative to temp dir]' ) - # Dragonfly, FreeBSD, and Darwin take an argument to -t and support any number - # of template files. These OSes do not have -p and -V. - else - args=( ${args:#((#s)|*\))(1:*|(\*|)-[ptV]*)} ) +case $variant in + ^(dragonfly|darwin)*) + args+=( '(-p --tmpdir)'{-p+,--tmpdir=}'[make relative to specified directory]: :_directories' ) + ;| + gnu) + args+=( + '--suffix=[append specified suffix to template]:template suffix' + '(: -)'{-V,--version}'[display version information]' + ) + ;| + # Most variants don't support long options (except BusyBox's --help) + ^(gnu|freebsd*)) + args=( ${args:#((#s)|*\))(\*|)--*} ) + ;| + gnu|*busybox*) + args+=( '(: -)--help[display help information]' ) + ;| + (gnu|*busybox|openbsd|solaris)*) + args+=( + '-t[generate template relative to temp dir]' + '1: :_guard "^-*" "template name"' + ) + ;; + (dragonfly|netbsd|freebsd|darwin)*) args+=( '-t[generate template relative to temp dir using specified prefix]:template prefix' '*: :_guard "^-*" "template name"' ) - fi -} + ;; +esac _arguments -s -S : $args |