# shellcheck shell=dash

___x_cmd_zig_pm_la(){
    [ "$#" -gt 0 ] ||  set -- --auto

    local fmt=auto;
    local op="$1"; shift
    case "$op" in
        -h|--help)      ___x_cmd help -m zig pm la "$@";   return ;;

        -j|--json)      fmt="json" ;;
        -c|--csv)       fmt="csv"  ;;
        --auto|--app)   fmt="${op#--}"  ;;
    esac

    ___x_cmd_zig_pm_la___"$fmt"
}

___x_cmd_zig_pm_la___auto(){
    if      ___x_cmd_is_stdout2tty; then        ___x_cmd_zig_pm_la___app
    else                                        ___x_cmd_zig_pm_la___csv
    fi
}

___x_cmd_zig_pm_la___csv(){
    ___x_cmd_zig_pm_la___json \
        | ___x_cmd jo 2c            .name .author .folder .default_branch .description .url \
        | ___x_cmd csv header --add  name  author  folder  default_branch  description  url
}


___x_cmd_zig_pm_la___yml(){
    ___x_cmd_zig_pm_la___json | ___x_cmd j2y
}

___x_cmd_zig_pm_la___json(){
    ___x_cmd_zig_pm_la___raw | ___x_cmd jq .
}

___x_cmd_zig_pm_la___raw(){
    # ___x_cmd ccmd 10m -- ___x_cmd curl -s https://zig.pm/api/packages
    ___x_cmd ccmd 10m -- ___x_cmd curl -s https://codeberg.org/x-cmd-zig/registry/raw/branch/v0.0.0/release/all.json
}

___x_cmd_zig_pm_la___app(){
    local ___X_CMD_CSV_APP_DATA_url
    local ___X_CMD_CSV_APP_DATA_name
    local ___X_CMD_CSV_APP_DATA_folder
    local ___X_CMD_CSV_APP_DATA_author
    local ___X_CMD_CSV_APP_DATA_description
    local ___X_CMD_CSV_APP_DATA_default_branch

    ___X_CMD_CSV_APP_SHBIN_CODE="xrc zig"                                   \
    ___x_cmd csv app    --return var --clear                                \
                        --action o Open 'Open on website'                   \
                        --processor '___x_cmd_zig_pm_la___view_app_open'    \
                        ___x_cmd_zig_pm_la___csv

    [ -n "$___X_CMD_CSV_APP_DATA_name" ] || return 1
    local name="$___X_CMD_CSV_APP_DATA_name"
    local url="$___X_CMD_CSV_APP_DATA_url"
    local branch="$___X_CMD_CSV_APP_DATA_default_branch"

    # https://github.com/zigzap/zap/archive/refs/tags/v0.8.0.tar.gz
    # https://github.com/webui-dev/zig-webui/archive/main.tar.gz
    local pkgurl="$url/archive/$branch.tar.gz"

    local id=
    ___x_cmd ui select id "Next:"                           \
        "Fetch the default branch -> $branch"               \
        "Fetch with specific version"                       \
        "Display the package information"                   \
        "Visit the official-site -> $url"                   \
        "EXIT"     || return

    case "$id" in
        1)      zig:info "run command => x zig fetch --save $pkgurl"
                ___x_cmd_zig___command fetch --save  "$pkgurl"
                ;;
        2)      zig:info "run command => x zig pm lsv $name"
                ___x_cmd_zig_pm_lsv                  "$name"
                ;;
        3)      ___x_cmd_zig_pm_info --yml           "$name"
                ;;
        4)      zig:info "x open $url"
                ___x_cmd open                        "$url"    ;;
        *)      return 0;;
    esac
}

___x_cmd_zig_pm_la___view_app_open(){
    local op="$*"; local url=
    case "$op" in
        x:request:o*)
            op="${op##*"$___X_CMD_UNSEENCHAR_001"}"
            url="$(___x_cmd_cmds printf "%s" "$op" | ___x_cmd csv awk '{printf("%s", cval(6))}')"
            ___x_cmd browse open "$url"
            ;;
    esac
}