Browse Source

Added the tugboat autocompletion plugin

DimitriSteyaert 9 years ago
parent
commit
83c3316cf4
1 changed files with 106 additions and 0 deletions
  1. 106 0
      plugins/tugboat/_tugboat

+ 106 - 0
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