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 "$@"
 |