diff options
author | DimitriSteyaert <github@dimitri.eu> | 2015-04-27 22:26:30 +0200 |
---|---|---|
committer | ncanceill <nicolas.canceill@ens-cachan.org> | 2015-06-11 21:10:33 +0200 |
commit | 83c3316cf4c4f11c15b8a9df488d629cf4bc23dc (patch) | |
tree | 4135baa4b6e957b4ad75fc5f11dbdfd5da4cf251 /plugins | |
parent | 25df9f3998359832667db206774a18cb45153a15 (diff) | |
download | zsh-83c3316cf4c4f11c15b8a9df488d629cf4bc23dc.tar.gz zsh-83c3316cf4c4f11c15b8a9df488d629cf4bc23dc.tar.bz2 zsh-83c3316cf4c4f11c15b8a9df488d629cf4bc23dc.zip |
Added the tugboat autocompletion plugin
Diffstat (limited to 'plugins')
-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 |