# Yii2 command completion

_yii2_format_command () {
  awk '/^- [a-z]+/ { sub(":", "", $2); print $2 }'
}

_yii2 () {
  if [ -f ./yii ]; then
    _arguments \
      '1: :->command'\
      '*: :->params'

    case $state in
      command)

      local -a commands
      local -a name

      if [[ $words[2] == *\/ ]]; then
        name=$words[2]
      fi

      commands=(${(f)"$(./yii help $name --color=0 | _yii2_format_command)"})
      compadd -Q -S '' -a -- commands
    esac
  fi
}

compdef _yii2 yii