diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:03:18 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:03:18 +0000 |
commit | f4acb49ea148cdd899f7f29f1591c7bc853c2135 (patch) | |
tree | b62d60873864065d6428a84a119dd8a3c90f1397 /completions/usermod | |
parent | Adding upstream version 1:2.11. (diff) | |
download | bash-completion-f4acb49ea148cdd899f7f29f1591c7bc853c2135.tar.xz bash-completion-f4acb49ea148cdd899f7f29f1591c7bc853c2135.zip |
Adding upstream version 1:2.12.0.upstream/1%2.12.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'completions/usermod')
-rw-r--r-- | completions/usermod | 55 |
1 files changed, 33 insertions, 22 deletions
diff --git a/completions/usermod b/completions/usermod index 77ab33c..797e536 100644 --- a/completions/usermod +++ b/completions/usermod @@ -1,51 +1,62 @@ # usermod(8) completion -*- shell-script -*- -_usermod() +_comp_cmd_usermod() { - 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='!(-*|*[cdeflpugGRZs]*)' + # shellcheck disable=SC2254 case $prev in - --comment | --home | --expiredate | --inactive | --help | --login | --password | \ - --uid | --selinux-user | -!(-*)[cdefhlpuZ]) + --comment | --home | --expiredate | --inactive | --help | --login | \ + --password | --uid | -${noargopts}[cdefhlpu]) + return + ;; + --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}) + --root | -${noargopts}R) + _comp_compgen_filedir -d return ;; - --root | -!(-*)R) - _filedir -d + --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 if [[ $cur == -* ]]; then # TODO: -U/--unlock, -p/--password, -L/--lock mutually exclusive - COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + _comp_compgen_help return fi - COMPREPLY=($(compgen -u -- "$cur")) + _comp_compgen -- -u } && - complete -F _usermod usermod + complete -F _comp_cmd_usermod usermod # ex: filetype=sh |