zsh-workers
 help / color / mirror / code / Atom feed
From: Oliver Kiddle <okiddle@yahoo.co.uk>
To: Zsh workers <zsh-workers@zsh.org>
Subject: PATCH: updated sudo completion
Date: Sat, 13 Dec 2014 19:46:04 +0100	[thread overview]
Message-ID: <11940.1418496364@thecus.kiddle.eu> (raw)

This updates the sudo completion.

Oliver

diff --git a/Completion/Unix/Command/_sudo b/Completion/Unix/Command/_sudo
index f8543f8..ee238b4 100644
--- a/Completion/Unix/Command/_sudo
+++ b/Completion/Unix/Command/_sudo
@@ -1,6 +1,6 @@
 #compdef sudo sudoedit
 
-local curcontext="$curcontext" environ e
+local environ e
 local -a args
 
 zstyle -a ":completion:${curcontext}:" environ environ
@@ -10,33 +10,39 @@ do local -x "$e"
 done
 
 args=(
-       '-V[show version]'
-       '-l[list allowed commands]'
-       '-L[list options from Default section]'
-       '-a[BSD auth type]:BSD auth type:'
-       '-c[BSD login class]:BSD login class:'
-       '-h[show help]'
-       '-v[validate user timestamp]'
-       '-k[invalidate user timestamp]'
-       '-K[remove user timestamp]'
-       '-r[Kerberos realm]:Kerberos realm:'
-       '-p[password prompt]:password prompt:'
-       '-u[user name]:user name:_users'
-       '-S[read password from stdin]'
+  '(-A --askpass)'{-A,--askpass}'[use a helper program for password prompting]'
+  '(-C --close-from)'{-C+,--close-from=}'[close file descriptors]:lowest fd to close'
+  '(-g --group)'{-g+,--group=}'[run command as the specified group name or ID]:group:_groups'
+  '(-)'{-h,--help}'[display help message and exit]'
+  '(-h --host)'{-h+,--host=}'[run command on host]:host:_hosts'
+  '(-K --remove-timestamp)'{-K,--remove-timestamp}'[remove timestamp file completely]'
+  '(-k --reset-timestamp)'{-k,--reset-timestamp}'[invalidate timestamp file]'
+  \*{-l,--list}"[list user's privileges or check a specific command]"
+  '(-n --non-interactive)'{-n,--non-interactive}'[non-interactive mode, no prompts are used]'
+  '(-p --prompt)'{-p+,--prompt=}'[use the specified password prompt]:prompt'
+  '(-r --role)'{-r+,--role=}'[create SELinux security context with specified role]:role'
+  '(-S --stdin)'{-S,--stdin}'[read password from standard input]'
+  '(-t --type)'{-t+,--type=}'[create SELinux security context with specified type]:type'
+  '(-U --other-user)'{-U+,--other-user=}'[in list mode, display privileges for user]:user:_users'
+  '(-u --user)'{-u+,--user=}'[run command (or edit file) as specified user]:user:_users'
+  '(-)'{-V,--version}'[display version information and exit]'
+  '(-v --validate)'{-v,--validate}"[update user's timestamp without running a command]"
 )
 
-if [[ $service = sudoedit ]]; then
-  _arguments $args \
-    '*:file: _files'
+if [[ $service = sudoedit || -n ${words[(r)-e]} ]]; then
+  args=( -A "-*" $args '!(-V --version -h --help)-e' '*:file:_files' )
 else
-  _arguments $args \
-    '(- :)-e[edit file]:*:file:_files' \
-    '(- :)-s[run SHELL]' \
-    '(- :)-i[simulate login]' \
-    '(-i -s -e)-b[run command in background]' \
-    '(-i -s -e)-E[preserve environment]' \
-    '(-i -s -e)-H[set HOME environment variable]' \
-    '(-i -s -e)-P[preserve group vector]' \
-    '(-):command: _command_names -e' \
+  args+=(
+    '(-e --edit 1 *)'{-e,--edit}'[edit files instead of running a command]' \
+    '(-s --shell)'{-s,--shell}'[run shell as the target user; a command may also be specified]' \
+    '(-i --login)'{-i,--login}'[run login shell as the target user; a command may also be specified]' \
+    '(-b --background -i --login -s --shell -e --edit)'{-b,--background}'[run command in the background]' \
+    '(-E --preserve-env -i --login -s --shell -e --edit)'{-E,--preserve-env}'[preserve user environment when running command]' \
+    '(-H --set-home -i --login -s --shell -e --edit)'{-H,--set-home}"[set HOME variable to target user's home dir]" \
+    '(-P --preserve-groups -i -login -s --shell -e --edit)'{-P,--preserve-groups}"[preserve group vector instead of setting to target's]" \
+    '(-)1:command: _command_names -e'
     '*::arguments: _normal'
+  )
 fi
+
+_arguments -s -S $args


                 reply	other threads:[~2014-12-13 18:52 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=11940.1418496364@thecus.kiddle.eu \
    --to=okiddle@yahoo.co.uk \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).