# x version release upload --platform gh --version v0.9.6 deb
# x version release upload --platform all --version v0.9.6 all
___x_cmd_version___release_upload(){
    [ $# -gt 0 ] || set -- -h
    local platform="gh" version="" name=""
    while [ $# -gt 0 ];do
        case "$1" in
            --help|-h)              ___x_cmd help -m version ; return   ;;
            -p|--platform)          platform="$2"; arg:2:shift          ;;
            --version)              version="$2";  arg:2:shift          ;;
            deb|arch|apk|rpm|all)   name="$1";     shift               ;;
            *)                      return 1 ;;
        esac
    done

    [ -n "$version" ] || N=version M="please provide --version" log:ret:1

    local p="" t="" code=0
    local platforms="$platform"
    [ "$platform" != "all" ] || platforms="gh cb gt"

    local names="$name"
    [ "$name" != "all" ] || names="rpm deb apk arch"

    for p in $platforms; do
        for t in $names; do
            ___x_cmd_version___release_upload_ "$p" "$t" "$version" || code="$?"
        done
    done

    ___x_cmd rmrf .upload
    return $code
}

___x_cmd_version___release_upload_()(
    local platform="$1"
    local name="$2"
    local version="$3"
    local repo="x-cmd/x-cmd"
    case "$platform" in
        gt)  repo="hst-x-cmd/test" ;;
    esac

    local filename
    case "$name" in
        deb)  filename="x-cmd_${version#v}_all.deb" ;;
        rpm)  filename="x-cmd_${version#v}_all.rpm" ;;
        apk)  filename="x-cmd_${version#v}_all.apk" ;;
        arch) filename="x-cmd_${version#v}_all.pkg.tar.zst" ;;
    esac

    # 1. download
    ___x_cmd mkdirp .upload
    (
        cd .upload
        x:info "Download [file=$filename]"
        [ -f "$filename" ] || ___x_cmd gh repo file download --repo "x-cmd/release" "dist/$version/$filename"
    ) || return 1

    # 2. release id
    local release_id
    release_id="$(___x_cmd "$platform" repo release ls --csv --repo "$repo" \
        | ___x_cmd csv awk -v version="$version" '{ if( cval(3) ~ version ) print cval(1) }' )"
    [ -n "$release_id" ] || N=x M="not found version=$version release" log:ret:1

    # 3. upload
    ___x_cmd "$platform" repo release attachment upload --repo "$repo" --release_id "$release_id" ".upload/$filename" || return 1

)
