-
Notifications
You must be signed in to change notification settings - Fork 0
/
project_zsh_completion.zsh
85 lines (73 loc) · 2.22 KB
/
project_zsh_completion.zsh
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#compdef project
#autoload
# Rename or link this file to _project somewhere on your $fpath (e.g. /usr/share/zsh/site-functions)
_project_all_projects() {
all_projects=(`project list --all`)
}
_project_my_projects() {
my_projects=(`project list`)
}
_project_roles() {
roles="owner member collaborator"
}
_project_users() {
users=(`project info "$1" 2>/dev/null | egrep '^[[:space::]+' | sed 's/\s//g'`)
}
local -a _project_commands
_project_commands=(
'create:create new project'
'rename:rename project'
'delete:delete existing project'
'info:print information about project'
'update:update permissions on project'
'adduser:add user to project'
'moduser:modify user permissions'
'deluser:remove user from project'
'list:list projects'
'check:check project permissions'
'help:print help info for command'
)
local -a my_projects all_projects users roles
_project() {
_arguments -s \
{-h,--help}'[show help]' \
{-P,--project-root}'[project-root dir]:DIR:_files -/' \
{-v,--verbose}'[verbose mode]' \
{-d,--debug}'[debug mode]' \
--nocolor'[disable color]' \
'*::project commands:_project_command' \
&& return 0
}
_project_command() {
local expl
local -a _project_commands
_project_cmds=(
'create:create new project'
'rename:rename project'
'delete:delete existing project'
'info:print information about project'
'update:update permissions on project'
'adduser:add user to project'
'moduser:modify user permissions'
'deluser:remove user from project'
'list:list projects'
'check:check project permissions'
'help:print help info for command'
)
if (( CURRENT == 1 )); then
_describe -t commands "project subcommand" _project_cmds
return
else
case "$words[1]" in
info|update|rename|delete|adduser|moduser|deluser)
_project_my_projects
# _arguments -s \
# -x'[fake option]' \
# && return 0
_wanted projects expl 'my projects' compadd -a my_projects
;;
esac
fi
return 0
}
_project "$@"