blob: 9bb5224e84e4d414169bafcd609b0dd0f281589d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#compdef mdo
local environ e cmd cpp sep
local -a _comp_priv_prefix suf reset
local curcontext="$curcontext" state line expl
local -A opt_args
zstyle -a ":completion:${curcontext}:" environ environ
for e in "${environ[@]}"
do local -x "$e"
done
cmd="$words[1]"
cpp='_comp_priv_prefix=( $cmd ${(kv)opt_args} )'
_arguments -s -S -A '-*' : \
'(- *)-h[display usage information]' \
'--euid=[override effective user]:user:_users' \
'--egid=[override effective group]:group:_groups' \
'-G+[set supplementary groups]:group:_sequence _groups' \
'-g+[set primary group]:group:_groups' \
'-i[keep current primary and supplementary groups]' \
'(-u -i)-k[use current credentials as baseline]' \
'--ruid=[override real user]:user:_users' \
'--rgid=[override real group]:group:_groups' \
'-s+[incrementally modify the supplementary groups set]: :->group-mods' \
'--svuid=[override saved user]:user:_users' \
'--svgid=[override saved group]:group:_groups' \
'-u+[run command as specified user]: :_users' \
"(-)1: :{ $cpp; _command_names -e }" \
"*:: :{ $cpp; _normal }" && return
if [[ $state = group-mods ]]; then
line=(
$opt_args[-g] ${(s.,.)opt_args[-G]}
${${(s.,.)${(M)PREFIX##*,}}#[-+@]}
${${(s.,.)${(M)SUFFIX%%,*}}#[-+@]}
)
compset -P '*,' || reset=( @ )
compset -S ',*' || suf=( -qS, )
if ! compset -P '[-+@]'; then
zstyle -s ":completion:${curcontext}:modifiers" list-separator sep || sep=--
_wanted modifiers expl 'group modifier' compadd -S "" -d \
"(-\ $sep\ exclude +\ $sep\ include @\ $sep\ reset)" - - + $reset
else
_wanted groups expl group _groups $suf -F line
fi
fi
|