107 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #compdef tugboat
 | |
| #autoload
 | |
| 
 | |
| # Tugboat zsh autocompletion
 | |
| 
 | |
| 
 | |
| local -a _commands
 | |
| _commands=(
 | |
|   'add-key:[NAME] Upload an ssh public key.'
 | |
|   'authorize:Authorize a DigitalOcean account with tugboat.'
 | |
|   'create:[NAME] Create a droplet.'
 | |
|   'destroy:[FUZZY_NAME] Destroy a droplet.'
 | |
|   'destroy_image:[FUZZY_NAME] Destroy an image.'
 | |
|   'droplets:Retrieve a list of your droplets.'
 | |
|   'halt:[FUZZY_NAME] Shutdown a droplet.'
 | |
|   'help:[COMMAND] Describe commands or a specific command.'
 | |
|   'images:Retrieve a list of your images.'
 | |
|   'info:[FUZZY_NAME] [OPTIONS] Show a droplets information.'
 | |
|   'info_image:[FUZZY_NAME] [OPTIONS] Show an images information.'
 | |
|   'keys:Show available SSH keys.'
 | |
|   'password-reset:[FUZZY_NAME] Reset root password.'
 | |
|   'rebuild:[FUZZY_NAME] [IMAGE_NAME] Rebuild a droplet.'
 | |
|   'regions:Show regions.'
 | |
|   'resize:[FUZZY_NAME -s, --size=N] Resize a droplet.'
 | |
|   'restart:[FUZZY_NAME] Restart a droplet.'
 | |
|   'sizes:Show available droplet sizes.'
 | |
|   'snapshot:[SNAPSHOT_NAME] [FUZZY_NAME] [OPTIONS] Queue a snapshot of the droplet.'
 | |
|   'ssh:[FUZZY_NAME] SSH into a droplet.'
 | |
|   'start:[FUZZY_NAME] Start a droplet.'
 | |
|   'verify:Check your DigitalOcean credentials.'
 | |
|   'version:Show version.'
 | |
|   'wait:[FUZZY_NAME] Wait for a droplet to reach a state.'
 | |
| )
 | |
| 
 | |
| local -a _create_arguments
 | |
| _create_arguments=(
 | |
|   '-s:[--size=N] The size_id of the droplet'
 | |
|   '-i:[--image=N] The image_id of the droplet'
 | |
|   '-r:[--region=N] The region_id of the droplet'
 | |
|   '-k:[--keys=KEYS] A comma separated list of SSH key ids to add to the droplet'
 | |
|   '-p:[--private-networking] Enable private networking on the droplet'
 | |
|   '-b:[--backups-enabled] Enable backups on the droplet'
 | |
|   '-q:[--quiet]'
 | |
| )
 | |
| 
 | |
| __task_list ()
 | |
| {
 | |
|   local expl
 | |
|   declare -a tasks
 | |
| 
 | |
|   arguments=(add-key authorize create destroy destroy_image droplets halt help images info info_image keys password-reset rebuild regions resize restart sizes snapshot ssh start verify version wait)
 | |
| 
 | |
|   _wanted tasks expl 'help' compadd $arguments
 | |
| }
 | |
| 
 | |
| __droplets_list ()
 | |
| {
 | |
|     _wanted application expl 'command' compadd $(command tugboat droplets | cut -d " " -f1)
 | |
| }
 | |
| 
 | |
| __tugboat-create ()
 | |
| {
 | |
|     local curcontext="$curcontext" state line
 | |
|     typeset -A opt_args
 | |
| 
 | |
|     _arguments -C \
 | |
|         ':command:->command' \
 | |
|         '*::options:->options'
 | |
| 
 | |
|     case $state in
 | |
|         (command)
 | |
|             _describe -t commands "gem subcommand" _create_arguments
 | |
|             return
 | |
|         ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| local curcontext="$curcontext" state line
 | |
| typeset -A opt_args
 | |
| 
 | |
| _arguments -C \
 | |
|     ':command:->command' \
 | |
|     '*::options:->options'
 | |
| 
 | |
| case $state in
 | |
|   (command)
 | |
|     _describe -t commands "gem subcommand" _commands
 | |
|     return
 | |
|   ;;
 | |
| 
 | |
|   (options)
 | |
|     case $line[1] in
 | |
|       (help)
 | |
|         _arguments ':feature:__task_list'
 | |
|       ;;
 | |
| 
 | |
|       (ssh)
 | |
|         _arguments ':feature:__droplets_list'
 | |
|       ;;
 | |
| 
 | |
|       (create)
 | |
|         _arguments ':feature:__tugboat-create'
 | |
|       ;;
 | |
|     esac
 | |
|   ;;
 | |
| esac
 |