# shellcheck    shell=dash disable=SC2034
xrc:mod:lib pkg     sphere/xbin

___x_cmd_pkg_info(){
    local name="$1";     [ -n "$name" ]   || N=pkg M="Provide a package name" log:ret:1

    local x_=;  local pkg_real_name=
    pkg_real_name="$( ___x_cmd_pkg_locate "$name" )"
    [ -n "$pkg_real_name" ] || {
        x_=; ___x_cmd_pkg_sphere_xbin_get_binmod_name_ "$name" 2>/dev/null
        [ -z "$x_" ] || pkg_real_name="$( ___x_cmd_pkg_locate "$x_" )"
    }

    # TODO: If there is not such package, search the binary provided and return the package name.
    if [ -z "$pkg_real_name" ]; then
        pkg:error "Not found $name"
        if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_chatty; then
            local namelist=
            namelist="$( ___x_cmd_pkg___recorrect_name "$name" )"
            [ -n "$namelist" ] || return 1

            x_=; ___x_cmd storeread_  ___x_cmd pick --ask "Do you mean the following pkg?" --row 6 printf "%s" "$namelist"
            [ -n "$x_" ] ||  return 1

            name="$x_"
            pkg_real_name="$( ___x_cmd_pkg_locate "$name" )"
        else
            return 1
        fi
    fi


    local filepath="${___X_CMD_PKG_METADATA_PATH}/${pkg_real_name}/info.tt.json"
    [ -f "$filepath" ] || N=pkg M="Not found [file=$filepath]" log:ret:1

    local version="$2"; [ -n "$version" ] || {
        x_=""; ___x_cmd_pkg_default_version_ "$name" "$osarch"
        [ -n "$x_" ] || N=pkg M="Not found $name version" log:ret:1
        version="$x_"
    }

    local osarch="$3";   [ -n "$osarch" ] || {
        ___x_cmd_pkg_osarch_ || return 1
        osarch="$___X_CMD_PKG_OSARCH"
    }

    < "$filepath" ___x_cmd cawk  \
        -E version,osarch,___X_CMD_LANG,pkg_real_name \
        -m j/json,j/jiter,j/jcp   \
        -f "${___X_CMD_ROOT_MOD}/pkg/lib/awk/info.awk" | \
        ___x_cmd j2y
}
