diff options
author | Dawid Ferenczy <dawid@ferenczy.cz> | 2015-08-25 16:34:04 +0200 |
---|---|---|
committer | Dawid Ferenczy <dawid@ferenczy.cz> | 2015-08-25 16:34:04 +0200 |
commit | 18ef1ee6481dbeca4fbecf3de627f946860ffd5a (patch) | |
tree | cb07e72538c470bb486596d955c7912c5b05e23e /plugins/tugboat | |
parent | eafd5f325208421b82a770e57441dd1063eb5745 (diff) | |
parent | 192de6bcffb0294e19f4203f6f7dc1a7f3e427be (diff) | |
download | zsh-18ef1ee6481dbeca4fbecf3de627f946860ffd5a.tar.gz zsh-18ef1ee6481dbeca4fbecf3de627f946860ffd5a.tar.bz2 zsh-18ef1ee6481dbeca4fbecf3de627f946860ffd5a.zip |
Merge remote-tracking branch 'robbyrussell/master'
Diffstat (limited to 'plugins/tugboat')
-rw-r--r-- | plugins/tugboat/_tugboat | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/plugins/tugboat/_tugboat b/plugins/tugboat/_tugboat new file mode 100644 index 000000000..6bf736920 --- /dev/null +++ b/plugins/tugboat/_tugboat @@ -0,0 +1,106 @@ +#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 |