# shellcheck shell=dash

# GET /api/v1/download?slug=&version=&tag=
___x_cmd_clawhub_skill_download(){
    local slug=; local version=; local tag=; local output=

    while [ $# -gt 0 ]; do
        case "$1" in
            -h|--help)      ___x_cmd help -m clawhub download "$@"; return 0 ;;
            --slug)         slug="$2";     shift 2 ;;
            --version)      version="$2";  shift 2 ;;
            --tag)          tag="$2";      shift 2 ;;
            -o|--output)    output="$2";   shift 2 ;;
            *)              [ -z "$slug" ] && slug="$1" || { clawhub:error "Unexpected arg: $1"; return 1; }; shift ;;
        esac
    done

    [ -n "$slug" ] || M='Provide skill slug' N=clawhub log:ret:64

    local args="slug=$slug"
    [ -z "$version" ] || args="$args&version=$version"
    [ -z "$tag" ]     || args="$args&tag=$tag"

    local resp=
    resp="$(___x_cmd_clawhub_u_curl get "/api/v1/download?$args" --no-auth)" || {
        ___x_cmd_clawhub_u_handle_resp false "Failed to download '$slug':"
        return 1
    }

    if [ -n "$output" ]; then
        printf "%s\n" "$resp" > "$output"
        clawhub:info "Downloaded to: $output"
    else
        printf "%s\n" "$resp"
    fi
}
