
xrc:mod:lib     gemini    cli/setup cli/skill
___x_cmd_gemini_cli(){
    [ $# -gt 0 ]    ||  set -- --runmain

    local op="$1";      shift
    case "$op" in
        -h|--help)      ___x_cmd help -m gemini cli         "$@"; return 0 ;;
        setup)          ___x_cmd_gemini_cli_setup           "$@" ;;
        skill)          ___x_cmd_gemini_cli_skill           "$@" ;;
        --|--runmain)   ___x_cmd_gemini_cli___runmain       "$@" ;;
        --runcmd)       ___x_cmd_gemini_cli___runcmd        "$@" ;;
        --util_get_agentfile_)
                        ___x_cmd_gemini_cli___"${op#--}"    "$@" ;;
        *)              ___x_cmd_gemini_cli___runmain "$op" "$@" ;;
    esac
}

___x_cmd_gemini_cli___runmain(){
    local apikey=""; local proxy=""
    ___x_cmd_gemini_cur apikey:= proxy:= 2>/dev/null

    GEMINI_API_KEY="${GEMINI_API_KEY:-$apikey}" \
    ___x_cmd proxy runifset "$proxy"            \
    ___x_cmd_gemini_cli___runcmd "$@"
}

___x_cmd_gemini_cli___runcmd(){
    if ___x_cmd_hascmd gemini; then
        ___x_cmd_gemini_cli___runcmd(){
            ___x_cmd_cmds gemini "$@"
        }
    else
        ___x_cmd env use gemini-cli || return $?
        ___x_cmd_gemini_cli___runcmd(){
            ___x_cmd snap --run gemini "$@"
        }
    fi && ___x_cmd_gemini_cli___runcmd "$@"
}

___x_cmd_gemini_cli___util_get_agentfile_(){
    local dir="${1:-$PWD}"
    local config_file="$HOME/.gemini/config.toml"
    local filename=""
    [ ! -f "$config_file" ] || {
        read -r filename <<A
$( < "$config_file" ___x_cmd jo env '.context.fileName.*' fname=. -- 'printf "%s\n" "$fname"' )
A
    }
    x_=""; ___x_cmd skill --util_find_up_ "$dir" GEMINI.md ${filename} || {
        gemini:error "Failed to retrieve existing context files — Not found GEMINI.md"
        return 1
    }
}
