#compdef bpython bpython-gtk bpython-urwid bpython2 bpython2-gtk bpython2-urwid bpython3 bpython3-gtk bpython3-urwid

local -a all_opts urwid_opts gtk_opts

all_opts=(
  '--config[configuration file]:config file:_files'
  '-h --help[show help message]'
  '(-i --interactive)'{-i,--interactive}'[drop to bpython after running a file]'
  '(-q --quiet)'{-q,--quiet}'[do not flush the output to stdout]'
  '(-V --version)'{-V,--version}'[print version]'
  '1:script:_files -g "*.u#py(-.)"'
  '*:arguments:'
)

urwid_opts=(
  '(-r --reactor)'{-r,--reactor}'[use Twisted reactor instead of the event loop]:reactor:'
  '--help-reactors[display list of available Twisted reactors]'
  '(-p --plugin)'{-p,--plugin}'[exectue a twistd plugin]:plugin:'
  '(-s --server)'{-s,--server}'[run an eval server on the given port]:port:'
)

gtk_opts=(
  '--socket-id[embed bpython]:socket id:'
)

case "$service" in
  bpython|bpython2|bpython3)
    _arguments \
      "$all_opts[@]" && return 0
  ;;

  bpython-urwid|bpython2-urwid|bpython3-urwid)
    _arguments \
      "$all_opts[@]" \
      "$urwid_opts[@]" && return 0
  ;;

  bpython-gtk|bpython2-gtk|bpython3-gtk)
    _arguments \
      "$all_opts[@]" \
      "$gtk_opts[@]" && return 0
  ;;
esac


# vim:autoindent expandtab shiftwidth=2 tabstop=2 softtabstop=2 filetype=zsh
