# shellcheck shell=dash

# resolve: resolve best matching asset without downloading

# TODO: I will teach AI how to handle ___x_cmd_eget_resolve_ and make it a rule.

___x_cmd_eget_resolve(){
    local _tag="" _system="" _asset_filters="" _forge="github" _quiet=0
    local _pre_release=0 _source=0
    local target=""

    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)      ___x_cmd help -m eget resolve "$@"; return ;;
            -t|--tag)       shift; _tag="$1" ;;
            -s|--system)    shift; _system="$1" ;;
            -a|--asset)     shift; _asset_filters="${_asset_filters}${_asset_filters:+|}$1" ;;
            --forge)        shift; _forge="$1" ;;
            -q|--quiet)     _quiet=1 ;;
            --pre-release)  _pre_release=1 ;;
            --source)       _source=1 ;;
            -*)             N=eget M="Unknown option: $1" log:ret:64; return ;;
            *)              target="$1" ;;
        esac
        shift
    done

    [ -z "$target" ] && { N=eget M="resolve: missing target (user/repo)" log:ret:64; return; }

    # Bare name (no slash, no colon) — try resolving via x install --ls --tsv.
    # Mirrors the check in lib/download.
    case "$target" in
        */*|*:*)
            ;;  # owner/repo, gh:prefix, or url — skip bare lookup
        *)
            local _resolved
            if _resolved="$( ___x_cmd_eget_resolve_bare "$target" )" && [ -n "$_resolved" ]; then
                eget:info "Resolved $target → $_resolved"
                target="$_resolved"
            else
                N=eget M="resolve: '$target' not found in x install database. Use 'x install --search $target' to find similar packages, or pass owner/repo directly." log:ret:64
                return
            fi
            ;;
    esac

    ___X_CMD_EGET_QUIET="$_quiet"

    local x_=""
    ___x_cmd_eget_resolve_ "$target" "$_forge" "$_tag" "$_system" "$_asset_filters" "$_pre_release" "$_source" || return

    local asset_name download_url version _rest
    asset_name="${x_%%
*}"; _rest="${x_#*
}"
    download_url="${_rest%%
*}"; version="${_rest#*
}"

    printf "asset:   %s\n" "$asset_name"
    printf "url:     %s\n" "$download_url"
    printf "version: %s\n" "$version"
}
