about summary refs log tree commit diff
path: root/Completion/Linux/Command/_gpasswd
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Linux/Command/_gpasswd')
-rw-r--r--Completion/Linux/Command/_gpasswd21
1 files changed, 21 insertions, 0 deletions
diff --git a/Completion/Linux/Command/_gpasswd b/Completion/Linux/Command/_gpasswd
new file mode 100644
index 000000000..9b4bedec6
--- /dev/null
+++ b/Completion/Linux/Command/_gpasswd
@@ -0,0 +1,21 @@
+#compdef gpasswd
+local curcontext=$curcontext state state_descr line
+typeset -A opt_args
+
+_arguments -C -w -s \
+  '(-a --add -d --delete)'{-a,--add}'[add user to group]: : _users' \
+  '(-d --delete -a --add)'{-d,--delete}'[remove user from group]: : _users' \
+  '(-h --help)'{-h,--help}'[display help]' \
+  '(-Q --root)'{-Q,--root}'[directory to chroot into]: : _files -/' \
+  '(-r --remove-password)'{-r,--remove-password}'[remove the group password]' \
+  '(-R --restrict)'{-R,--restrict}'[restrict access to GROUP to its members]' \
+  '(-M --members -A --administrators)'{-M,--members}'[set the list of members of GROUP]: :->users' \
+  '(-A --administrators -M --members)'{-A,--administrators}'[set the list of admins for GROUP]: :->users' \
+  '1: : _groups'
+
+if [[ $state == users ]]; then
+  local -a ignore
+  compset -P '*,'; compset -S ',*'
+  ignore=( ${(s:,:)IPREFIX} ${(s:,:)ISUFFIX} )
+  _users -F ignore -qS ,
+fi