diff options
Diffstat (limited to 'completions/useradd')
-rw-r--r-- | completions/useradd | 53 |
1 files changed, 32 insertions, 21 deletions
diff --git a/completions/useradd b/completions/useradd index ceeca91..6c0bef1 100644 --- a/completions/useradd +++ b/completions/useradd @@ -1,46 +1,57 @@ # useradd(8) completion -*- shell-script -*- -_useradd() +_comp_cmd_useradd() { - local cur prev words cword split - _init_completion -s || return + local cur prev words cword was_split comp_args + _comp_initialize -s -- "$@" || return # TODO: if -o/--non-unique is given, could complete on existing uids # with -u/--uid + local word chroot="" has_chroot="" + for word in "${words[@]}"; do + if [[ $has_chroot ]]; then + chroot=$word + break + fi + [[ $word != -@(R|-root) ]] || has_chroot=set + done + + local noargopts='!(-*|*[cefKpubdkRgGZs]*)' + # shellcheck disable=SC2254 case $prev in - --comment | --help | --expiredate | --inactive | --key | --password | --uid | \ - --selinux-user | -!(-*)[chefKpuZ]) + --comment | --help | --expiredate | --inactive | --key | --password | \ + --uid | -${noargopts}[chefKpu]) + return + ;; + --base-dir | --home-dir | --skel | --root | -${noargopts}[bdkR]) + _comp_compgen_filedir -d return ;; - --base-dir | --home-dir | --skel | --root | -!(-*)[bdkR]) - _filedir -d + --gid | -${noargopts}g) + _comp_compgen_gids + _comp_compgen -a -- -g return ;; - --gid | -!(-*)g) - _gids - COMPREPLY=($(compgen -W '${COMPREPLY[@]} $(compgen -g)' \ - -- "$cur")) + --groups | -${noargopts}G) + _comp_delimited , -g return ;; - --groups | -!(-*)G) - local prefix= - [[ $cur == *,* ]] && prefix="${cur%,*}," - COMPREPLY=($(compgen -g -- "${cur##*,}")) - ((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/#/$prefix}) + --selinux-user | -${noargopts}Z) + _comp_compgen_selinux_users return ;; - --shell | -!(-*)s) - _shells + --shell | -${noargopts}s) + _comp_compgen_shells "${chroot-}" return ;; esac - $split && return + [[ $was_split ]] && return [[ $cur == -* ]] && - COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + _comp_compgen_help } && - complete -F _useradd useradd + complete -F _comp_cmd_useradd useradd # ex: filetype=sh |