# Bash completion script for radp-bf
# Generated by radp-bash-framework

_radp_bf() {
    local cur prev words cword

    # 兼容模式：如果 _init_completion 不存在，使用手动初始化
    if type _init_completion &>/dev/null; then
        _init_completion || return
    else
        COMPREPLY=()
        cur="${COMP_WORDS[COMP_CWORD]}"
        prev="${COMP_WORDS[COMP_CWORD-1]}"
        words=("${COMP_WORDS[@]}")
        cword="$COMP_CWORD"
    fi

    local i cmd_path=""

    # Known command paths (generated)
    local _all_cmds=" completion path scaffold scaffold_new scaffold_upgrade upgrade version  "

    # Build cmd_path: skip global option values, validate against known commands
    for ((i = 1; i < cword; i++)); do
        case "${words[i]}" in
            -*) ;;
            *)
                local _test_path
                if [[ -z "$cmd_path" ]]; then
                    _test_path="${words[i]}"
                else
                    _test_path="$cmd_path ${words[i]}"
                fi
                if [[ " $_all_cmds " == *" ${_test_path// /_} "* ]]; then
                    cmd_path="$_test_path"
                fi
                ;;
        esac
    done

    # Command completions
    case "$cmd_path" in
        '')
            COMPREPLY=($(compgen -W "completion path scaffold upgrade version  -q --quiet -v --verbose --debug --show-config --all --json  --help --version" -- "$cur"))
            ;;
        'completion')
            # 计算参数位置（减去命令路径深度）
            local arg_idx=0
            for ((i = 1; i < cword; i++)); do
                case "${words[i]}" in
                    -*) ;;
                    *) ((arg_idx++)) ;;
                esac
            done
            ((arg_idx -= 1)) || true
            # 根据参数位置补全
            case "$arg_idx" in
                0)
                    COMPREPLY=($(compgen -W "bash zsh" -- "$cur"))
                    return
                    ;;
            esac
            COMPREPLY=($(compgen -W "--help " -- "$cur"))
            ;;
        'path')
            # 计算参数位置（减去命令路径深度）
            local arg_idx=0
            for ((i = 1; i < cword; i++)); do
                case "${words[i]}" in
                    -*) ;;
                    *) ((arg_idx++)) ;;
                esac
            done
            ((arg_idx -= 1)) || true
            # 根据参数位置补全
            case "$arg_idx" in
                0)
                    COMPREPLY=($(compgen -W "init launcher root resolve" -- "$cur"))
                    return
                    ;;
            esac
            COMPREPLY=($(compgen -W "--help " -- "$cur"))
            ;;
        'scaffold')
            COMPREPLY=($(compgen -W "new upgrade  --help" -- "$cur"))
            ;;
        'scaffold new')
            COMPREPLY=($(compgen -W "--help " -- "$cur"))
            ;;
        'scaffold upgrade')
            # 计算参数位置（减去命令路径深度）
            local arg_idx=0
            for ((i = 1; i < cword; i++)); do
                case "${words[i]}" in
                    -*) ;;
                    *) ((arg_idx++)) ;;
                esac
            done
            ((arg_idx -= 2)) || true
            # 根据参数位置补全
            case "$arg_idx" in
                1)
                    COMPREPLY=($(compgen -W "entry ide gitignore version workflows packaging globals all" -- "$cur"))
                    return
                    ;;
            esac
            COMPREPLY=($(compgen -W "--help  --dry-run --force --diff" -- "$cur"))
            ;;
        'upgrade')
            COMPREPLY=($(compgen -W "--help  --check --force -y --yes --version" -- "$cur"))
            ;;
        'version')
            COMPREPLY=($(compgen -W "--help " -- "$cur"))
            ;;
        *)
            COMPREPLY=()
            ;;
    esac
}

complete -F _radp_bf radp-bf
