107 lines
2.8 KiB
Text
107 lines
2.8 KiB
Text
|
#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
|