_moosh() 
{
    local cur prev opts plugins
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="$(moosh --list-commands)"
    plugins="$(moosh plugin-list --name-only)"

  if [ "$COMP_CWORD" -eq 1 ]; then
    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
  elif [ "$COMP_CWORD" -eq 2 ]; then
    case "$prev" in
      plugin-install|plugin-uninstall|module-reinstall)
    COMPREPLY=( $(compgen -W "${plugins}" -- ${cur}) )
        ;;
      theme-settings-import|file-upload|gradebook-import|user-import-pictures|userprofilefields-import|apache-parse-missing-files|apache-parse-perflog)
    COMPREPLY=( $(compgen -d -- ${cur}) )
        ;;
      *)
        ;;
    esac
  fi

  return 0
}
complete -F _moosh moosh
