# Auto-completion for winhelper
_winehelper_completions() {
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix"
    wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"

    case "${prev}" in
        winehelper)
            COMPREPLY=( $(compgen -W "${opts} ${wine_cmd}" -- "${cur}") )
            return 0
            ;;
        --debug)
            COMPREPLY=( $(compgen -W "${wine_cmd}" -- "${cur}") )
            return 0
            ;;
        install|-i)
            local scripts="$(ls -1 /usr/share/winehelper/autoinstall) $(ls -1 /usr/share/winehelper/manualinstall)"
            COMPREPLY=( $(compgen -W "list ${scripts}" -- "${cur}") )
            return 0
            ;;
        run|installed)
            local installed=$(grep -h "Exec=env" ~/.local/share/winehelper/*.desktop 2>/dev/null | awk -F'/' '{print $NF}' | awk -F'"' '{print $1}')
            COMPREPLY=( $(compgen -W "${installed}" -- "${cur}") )
            return 0
            ;;
        remove-prefix|backup-prefix)
            local prefixes=$(ls -1 ~/.local/share/winehelper/prefixes 2>/dev/null)
            COMPREPLY=( $(compgen -W "${prefixes}" -- "${cur}") )
            return 0
            ;;
        restore-prefix)
            return 0
            ;;
        *)
            ;;
    esac
}

complete -F _winehelper_completions winehelper
