#compdef styler
# the above line should contain all commands to be completed using this file
# zsh autocompletions for styler script

local curcontext="$curcontext" state line ret=1
local cmdnames=(theme set download list help version)

_arguments -C \
  '1: :->cmds' \
  '2: :->args' \
  '3: :->subrout' && ret=0

local -a initial_commands=(
  'theme:Temporarily switch theme to specified argument'
  'set:Permanently set theme to specified argument'
  'download:Download a base16 compatible template'
  'list:Display installed processors, templates, or themes'
  'help:Display help text and exit'
  'version:Display styler information and exit'
)

__themes() {
  echo "$(styler list themes)"
}

case $state in
cmds)
  _describe -t commands 'styler cmd' initial_commands && ret=0
  ;;

args)
  case $words[2] in
  theme | set)
    _values 'themes' $(__themes) && ret=0
    ;;

  list)
    _values 'listopts' \
      'processors[Display available application processors]' \
      'templates[Display available base16 templates]' \
      'themes[Display available base16 themes]' && ret=0
    ;;

  *)
    ((ret)) && _message 'no more arguments'
    ;;

  esac
  ;;
esac