50 lines
1.0 KiB
Plaintext
50 lines
1.0 KiB
Plaintext
#compdef sandbox
|
|
|
|
__get_sandboxes() {
|
|
/bin/ls $SANDBOX_ROOT 2> /dev/null
|
|
}
|
|
|
|
__sandboxes() {
|
|
local -a sandboxes
|
|
sandboxes=(${(fo)"$(__get_sandboxes)"})
|
|
_describe 'in' sandboxes
|
|
}
|
|
|
|
_sandbox_cmds() {
|
|
local commands; commands=(
|
|
'create:Create a new sandbox'
|
|
'rename:Rename an existing sandbox'
|
|
'destroy:Destroy an existing sandbox'
|
|
'list:Show all existing sandboxes'
|
|
'enable:Enable an existing sandbox'
|
|
'disable:Disable the current sandbox'
|
|
)
|
|
_describe -t commands 'sandbox command' commands "$@"
|
|
}
|
|
|
|
_sandbox() {
|
|
local context curcontext="$curcontext" state line
|
|
typeset -A opt_args
|
|
|
|
_arguments -C \
|
|
'1: :_sandbox_cmds' \
|
|
'*::arg:->args'
|
|
|
|
case $state in
|
|
(args)
|
|
curcontext="${curcontext%:*:*}:sandbox-cmd-$words[1]:"
|
|
case $line[1] in
|
|
(create|list|disable)
|
|
;;
|
|
(enable|destroy)
|
|
_arguments -C '1:: :__sandboxes'
|
|
;;
|
|
(rename)
|
|
_arguments -C '1:: :__sandboxes'
|
|
;;
|
|
esac
|
|
esac
|
|
}
|
|
|
|
_sandbox "$@"
|