Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: updated sudo completion
- X-seq: zsh-workers 33958
- From: Oliver Kiddle <okiddle@xxxxxxxxxxx>
- To: Zsh workers <zsh-workers@xxxxxxx>
- Subject: PATCH: updated sudo completion
- Date: Sat, 13 Dec 2014 19:46:04 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1418496365; bh=mv7YC14xGjDJkaDAdOKiGyQ35xggUWzsiOAfF3B4K+4=; h=From:To:Subject:Date:From:Subject; b=hjGPNIfmqub760hnoSBpaDXSt2fKyWdEmFTqWlnSVPmXcOAWg1M51TMsfRRtw92Dhj146gWvKLbQQE3ZfM+zPbT91wnaxYqrkzNxGz0NUEIC30rejY0gCuaUWg5t8qGp1ZvscuyM7EoM5Cmc7jyTgtpq12k2z3ZKmW4Li0LmSFnahKIJW+pXsyoHQVg+SoTMhrELG434AGY6soUOwFHA0/8tt4/Cs4zgbMZZ3L8Z2iZbmurATglILTIfIWapZvC34U4ocQbaDHPKpSV578Yu8BwKK8AwgwsX9HUz+U1yzi6VkulSVTqISmTCKvB7SzEb7l+BwbQbteJW15FW+1ZY8A==
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=s2048; d=yahoo.co.uk; b=FRtQOemz0yNa9BRfO0uHCEjekqBShln9URDvmZWESooKiIJ3ufyfuKJLqsakKIxMJPmbZq7jWjv5LBpqjowmp+94uKL7A4vnBh6ZdxxAQjXGPyC5bm1U3FWhHp9iGO57GfIiDayAGrZ6xoPDLVoIzg+nm9r81Xt2ZFyQpxcC6y1oDA4rlqgD1euGgG/iwNbyco6qYQnH0Mdb0MFoqlsq4GzoBmN9kAKBsyJ6tmh6UGNh81+8RvBloUOuXT4+4KRXda2PRV+cYXw7/PsdWnLnPZ5ZUXOJJgATVHgM+nil2bJaO0Sl7FbdATbYIYKXbCWcWVou4d2zMTtEe5oQG/xE7g==;
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
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
Messages sorted by:
Reverse Date,
Date,
Thread,
Author