From 21a09a14181851e931f9b2b65704044eed169fb7 Mon Sep 17 00:00:00 2001 From: dana Date: Wed, 3 Jan 2018 18:14:05 -0600 Subject: 42214: use less general names on new functions for completing file flags and modes --- ChangeLog | 6 ++++ Completion/BSD/Command/_chflags | 2 +- Completion/BSD/Type/_file_flags | 70 ++++++++++++++++++++++++++++++++++++++++ Completion/BSD/Type/_flags | 70 ---------------------------------------- Completion/Unix/Command/_chmod | 2 +- Completion/Unix/Command/_find | 2 +- Completion/Unix/Command/_mkdir | 2 +- Completion/Unix/Type/_file_modes | 37 +++++++++++++++++++++ Completion/Unix/Type/_modes | 37 --------------------- 9 files changed, 117 insertions(+), 111 deletions(-) create mode 100644 Completion/BSD/Type/_file_flags delete mode 100644 Completion/BSD/Type/_flags create mode 100644 Completion/Unix/Type/_file_modes delete mode 100644 Completion/Unix/Type/_modes diff --git a/ChangeLog b/ChangeLog index 3d51ad842..d7ab6fea8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2018-01-04 Oliver Kiddle + * dana: 42214: Completion/BSD/Type/_file_flags, + Completion/Unix/Type/_file_modes, Completion/Unix/Command/_find, + Completion/Unix/Command/_mkdir, Completion/BSD/Command/_chflags, + Completion/Unix/Command/_chmod: use less general names on new + functions for completing file flags and modes + * github #21: Maciek Makowski: Completion/Linux/Command/_networkmanager: update nmcli completions to be compatible with recent version 1.8.4 diff --git a/Completion/BSD/Command/_chflags b/Completion/BSD/Command/_chflags index f97d1cdd1..924b09acd 100644 --- a/Completion/BSD/Command/_chflags +++ b/Completion/BSD/Command/_chflags @@ -12,7 +12,7 @@ if [[ $OSTYPE = (darwin|dragonfly|freebsd)* ]]; then fi _arguments -s -A "-*" : $args \ - ': :_flags' \ + ': :_file_flags' \ '*:file:_files "$own"' \ - opth \ '-h[act on symlinks]' \ diff --git a/Completion/BSD/Type/_file_flags b/Completion/BSD/Type/_file_flags new file mode 100644 index 000000000..95044121c --- /dev/null +++ b/Completion/BSD/Type/_file_flags @@ -0,0 +1,70 @@ +#autoload + +# Provides completion for file flags (formerly part of _chflags) + +local curcontext=$curcontext su=$(( ! EUID || $+_comp_priv_prefix )) +local -a context line state state_descr copts=( "${@}" ) flags flag_descs +local -A val_args + +flag_descs+=( + uappnd 'user append-only' + uchg 'user immutable' +) + +if (( su )); then + flag_descs+=( + arch archived + nodump nodump + sappnd 'system append-only' + schg 'system immutable' + ) +fi + +if [[ $OSTYPE = (darwin|dragonfly|freebsd|netbsd)* ]]; then + flag_descs+=(opaque opaque) + + if [[ $OSTYPE = darwin* ]]; then + flag_descs+=(hidden hidden) + fi + + if [[ $OSTYPE = (dragonfly|freebsd)* ]]; then + flag_descs+=(uunlnk 'user undeletable') + + (( su )) && + flag_descs+=(sunlnk 'system undeletable') + fi + + if [[ $OSTYPE = dragonfly* ]]; then + flag_descs+=( + cache XXX + nouhistory 'user nohistory' + ) + + (( su )) && flag_descs+=( + noscache XXX + noshistory 'system nohistory' + ) + fi + + [[ $OSTYPE = freebsd* ]] && flag_descs+=( + uarch archive + uhidden hidden + uoffline offline + urdonly 'DOS, Windows and CIFS readonly' + ureparse 'Windows reparse point' + usparse 'sparse file' + usystem 'DOS, Windows and CIFS system' + ) +fi + +for 1 2 in $flag_descs; do + if [[ $1 = no* ]]; then + flags+=("(${1#no})$1[set the $2 flag]" + "($1)${1#no}[unset the $2 flag]") + else + flags+=("(no$1)$1[set the $2 flag]" + "($1)no$1[unset the $2 flag]") + fi +done + +_values -O copts -s , 'file flags' $flags diff --git a/Completion/BSD/Type/_flags b/Completion/BSD/Type/_flags deleted file mode 100644 index 95044121c..000000000 --- a/Completion/BSD/Type/_flags +++ /dev/null @@ -1,70 +0,0 @@ -#autoload - -# Provides completion for file flags (formerly part of _chflags) - -local curcontext=$curcontext su=$(( ! EUID || $+_comp_priv_prefix )) -local -a context line state state_descr copts=( "${@}" ) flags flag_descs -local -A val_args - -flag_descs+=( - uappnd 'user append-only' - uchg 'user immutable' -) - -if (( su )); then - flag_descs+=( - arch archived - nodump nodump - sappnd 'system append-only' - schg 'system immutable' - ) -fi - -if [[ $OSTYPE = (darwin|dragonfly|freebsd|netbsd)* ]]; then - flag_descs+=(opaque opaque) - - if [[ $OSTYPE = darwin* ]]; then - flag_descs+=(hidden hidden) - fi - - if [[ $OSTYPE = (dragonfly|freebsd)* ]]; then - flag_descs+=(uunlnk 'user undeletable') - - (( su )) && - flag_descs+=(sunlnk 'system undeletable') - fi - - if [[ $OSTYPE = dragonfly* ]]; then - flag_descs+=( - cache XXX - nouhistory 'user nohistory' - ) - - (( su )) && flag_descs+=( - noscache XXX - noshistory 'system nohistory' - ) - fi - - [[ $OSTYPE = freebsd* ]] && flag_descs+=( - uarch archive - uhidden hidden - uoffline offline - urdonly 'DOS, Windows and CIFS readonly' - ureparse 'Windows reparse point' - usparse 'sparse file' - usystem 'DOS, Windows and CIFS system' - ) -fi - -for 1 2 in $flag_descs; do - if [[ $1 = no* ]]; then - flags+=("(${1#no})$1[set the $2 flag]" - "($1)${1#no}[unset the $2 flag]") - else - flags+=("(no$1)$1[set the $2 flag]" - "($1)no$1[unset the $2 flag]") - fi -done - -_values -O copts -s , 'file flags' $flags diff --git a/Completion/Unix/Command/_chmod b/Completion/Unix/Command/_chmod index 80c6f33ca..af64b9eb9 100644 --- a/Completion/Unix/Command/_chmod +++ b/Completion/Unix/Command/_chmod @@ -3,7 +3,7 @@ local curcontext="$curcontext" state line expl ret=1 local -a args privs -args=( '*: :->files' '1: :_modes' ) +args=( '*: :->files' '1: :_file_modes' ) if _pick_variant gnu=Free\ Soft unix --version; then args+=( diff --git a/Completion/Unix/Command/_find b/Completion/Unix/Command/_find index 2bfb89825..edd46ac1c 100644 --- a/Completion/Unix/Command/_find +++ b/Completion/Unix/Command/_find @@ -139,7 +139,7 @@ _arguments -C $args \ '*-nogroup' \ '*-nouser' \ '*-ok:program: _command_names -e:*\;::program arguments: _normal' \ - '*-perm: :_modes' \ + '*-perm: :_file_modes' \ '*-print' \ '*-prune' \ '*-size:file size (blocks)' \ diff --git a/Completion/Unix/Command/_mkdir b/Completion/Unix/Command/_mkdir index 830a96162..53536b01d 100644 --- a/Completion/Unix/Command/_mkdir +++ b/Completion/Unix/Command/_mkdir @@ -4,7 +4,7 @@ local curcontext="$curcontext" state line expl args variant ret=1 typeset -A opt_args args=( - '(-m --mode)'{-m,--mode=}'[set permission mode]: :_modes' + '(-m --mode)'{-m,--mode=}'[set permission mode]: :_file_modes' '(-p --parents)'{-p,--parents}'[make parent directories as needed]' '(-)*: :->directories' ) diff --git a/Completion/Unix/Type/_file_modes b/Completion/Unix/Type/_file_modes new file mode 100644 index 000000000..fbe4c9363 --- /dev/null +++ b/Completion/Unix/Type/_file_modes @@ -0,0 +1,37 @@ +#autoload + +# Provides completion for file modes (formerly part of _chmod) + +local curcontext=$curcontext +local -a context line state state_descr copts=( "${@}" ) privs +local -A val_args + +privs=( + 'r[read]' 'w[write]' 'x[execute]' + 's[set uid/gid]' 't[sticky]' + 'X[execute only if directory or executable to another]' + "u[owner's current permissions]" + "g[group's current permissions]" + "o[others' current permissions]" +) + +[[ $OSTYPE == solaris* ]] && +privs+=( 'l[mandatory locking]' ) + +compset -P '*,' +compset -S ',*' + +if [[ -prefix [0-7] ]]; then + _message -e number 'numeric mode' +elif compset -P '[a-z]#[+-=]'; then + _values -O copts -S '' privilege $privs && return 0 +else + compset -P '*' + copts=( -S '' ) + _alternative -O copts \ + 'who:who:((a\:all u\:owner g\:group o\:others))' \ + 'operators:operator:(+ - =)' \ + && return 0 +fi + +return 1 diff --git a/Completion/Unix/Type/_modes b/Completion/Unix/Type/_modes deleted file mode 100644 index fbe4c9363..000000000 --- a/Completion/Unix/Type/_modes +++ /dev/null @@ -1,37 +0,0 @@ -#autoload - -# Provides completion for file modes (formerly part of _chmod) - -local curcontext=$curcontext -local -a context line state state_descr copts=( "${@}" ) privs -local -A val_args - -privs=( - 'r[read]' 'w[write]' 'x[execute]' - 's[set uid/gid]' 't[sticky]' - 'X[execute only if directory or executable to another]' - "u[owner's current permissions]" - "g[group's current permissions]" - "o[others' current permissions]" -) - -[[ $OSTYPE == solaris* ]] && -privs+=( 'l[mandatory locking]' ) - -compset -P '*,' -compset -S ',*' - -if [[ -prefix [0-7] ]]; then - _message -e number 'numeric mode' -elif compset -P '[a-z]#[+-=]'; then - _values -O copts -S '' privilege $privs && return 0 -else - compset -P '*' - copts=( -S '' ) - _alternative -O copts \ - 'who:who:((a\:all u\:owner g\:group o\:others))' \ - 'operators:operator:(+ - =)' \ - && return 0 -fi - -return 1 -- cgit 1.4.1