Parent directory

_tugboat

2899 bytes
  1#compdef tugboat
  2#autoload
  3
  4# Tugboat zsh autocompletion
  5
  6
  7local -a _commands
  8_commands=(
  9  'add-key:[NAME] Upload an ssh public key.'
 10  'authorize:Authorize a DigitalOcean account with tugboat.'
 11  'create:[NAME] Create a droplet.'
 12  'destroy:[FUZZY_NAME] Destroy a droplet.'
 13  'destroy_image:[FUZZY_NAME] Destroy an image.'
 14  'droplets:Retrieve a list of your droplets.'
 15  'halt:[FUZZY_NAME] Shutdown a droplet.'
 16  'help:[COMMAND] Describe commands or a specific command.'
 17  'images:Retrieve a list of your images.'
 18  'info:[FUZZY_NAME] [OPTIONS] Show a droplets information.'
 19  'info_image:[FUZZY_NAME] [OPTIONS] Show an images information.'
 20  'keys:Show available SSH keys.'
 21  'password-reset:[FUZZY_NAME] Reset root password.'
 22  'rebuild:[FUZZY_NAME] [IMAGE_NAME] Rebuild a droplet.'
 23  'regions:Show regions.'
 24  'resize:[FUZZY_NAME -s, --size=N] Resize a droplet.'
 25  'restart:[FUZZY_NAME] Restart a droplet.'
 26  'sizes:Show available droplet sizes.'
 27  'snapshot:[SNAPSHOT_NAME] [FUZZY_NAME] [OPTIONS] Queue a snapshot of the droplet.'
 28  'ssh:[FUZZY_NAME] SSH into a droplet.'
 29  'start:[FUZZY_NAME] Start a droplet.'
 30  'verify:Check your DigitalOcean credentials.'
 31  'version:Show version.'
 32  'wait:[FUZZY_NAME] Wait for a droplet to reach a state.'
 33)
 34
 35local -a _create_arguments
 36_create_arguments=(
 37  '-s:[--size=N] The size_id of the droplet'
 38  '-i:[--image=N] The image_id of the droplet'
 39  '-r:[--region=N] The region_id of the droplet'
 40  '-k:[--keys=KEYS] A comma separated list of SSH key ids to add to the droplet'
 41  '-p:[--private-networking] Enable private networking on the droplet'
 42  '-b:[--backups-enabled] Enable backups on the droplet'
 43  '-q:[--quiet]'
 44)
 45
 46__task_list ()
 47{
 48  local expl
 49  declare -a tasks
 50
 51  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)
 52
 53  _wanted tasks expl 'help' compadd $arguments
 54}
 55
 56__droplets_list ()
 57{
 58    _wanted application expl 'command' compadd $(command tugboat droplets | cut -d " " -f1)
 59}
 60
 61__tugboat-create ()
 62{
 63    local curcontext="$curcontext" state line
 64    typeset -A opt_args
 65
 66    _arguments -C \
 67        ':command:->command' \
 68        '*::options:->options'
 69
 70    case $state in
 71        (command)
 72            _describe -t commands "gem subcommand" _create_arguments
 73            return
 74        ;;
 75    esac
 76}
 77
 78local curcontext="$curcontext" state line
 79typeset -A opt_args
 80
 81_arguments -C \
 82    ':command:->command' \
 83    '*::options:->options'
 84
 85case $state in
 86  (command)
 87    _describe -t commands "gem subcommand" _commands
 88    return
 89  ;;
 90
 91  (options)
 92    case $line[1] in
 93      (help)
 94        _arguments ':feature:__task_list'
 95      ;;
 96
 97      (ssh)
 98        _arguments ':feature:__droplets_list'
 99      ;;
100
101      (create)
102        _arguments ':feature:__tugboat-create'
103      ;;
104    esac
105  ;;
106esac