# shellcheck shell=bash
# shellcheck disable=SC2207  # Standard pattern for bash completions
# Bash completion for Claude Code CLI

command -v claude &>/dev/null || return

_claude_completions() {
    local cur prev opts commands
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    # Subcommands
    commands="doctor install mcp plugin setup-token update"

    # All options
    opts="-c -d -h -p -r -v
        --add-dir --agent --agents --allow-dangerously-skip-permissions
        --allowed-tools --append-system-prompt --betas --chrome --continue
        --dangerously-skip-permissions --debug --debug-file --disable-slash-commands
        --disallowed-tools --fallback-model --file --fork-session --help --ide
        --include-partial-messages --input-format --json-schema --max-budget-usd
        --mcp-config --model --no-chrome --no-session-persistence --output-format
        --permission-mode --plugin-dir --print --replay-user-messages --resume
        --session-id --setting-sources --settings --strict-mcp-config
        --system-prompt --tools --verbose --version"

    # Handle option arguments
    case "${prev}" in
        --model|--fallback-model)
            COMPREPLY=( $(compgen -W "sonnet opus haiku" -- "${cur}") )
            return 0
            ;;
        --permission-mode)
            COMPREPLY=( $(compgen -W "acceptEdits bypassPermissions default delegate dontAsk plan" -- "${cur}") )
            return 0
            ;;
        --input-format)
            COMPREPLY=( $(compgen -W "text stream-json" -- "${cur}") )
            return 0
            ;;
        --output-format)
            COMPREPLY=( $(compgen -W "text json stream-json" -- "${cur}") )
            return 0
            ;;
        --add-dir|--plugin-dir|--debug-file)
            COMPREPLY=( $(compgen -d -- "${cur}") )
            return 0
            ;;
        --settings|--mcp-config)
            COMPREPLY=( $(compgen -f -- "${cur}") )
            return 0
            ;;
        install)
            COMPREPLY=( $(compgen -W "stable latest" -- "${cur}") )
            return 0
            ;;
    esac

    # Complete subcommands or options
    if [[ ${cur} == -* ]]; then
        COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
    elif [[ ${COMP_CWORD} -eq 1 ]]; then
        COMPREPLY=( $(compgen -W "${commands} ${opts}" -- "${cur}") )
    else
        COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
    fi

    return 0
}

complete -F _claude_completions claude
