# shellcheck    shell=sh        disable=SC3043,SC2154,2046,2034

___x_cmd_build_v0(){
    [ $# -gt 0 ] || {
        build:error "build option is null"
        return 1
    }

    local op="$1";  shift
    case "$op" in
        transform|release)
            ___x_cmd_build_v0_"$op" "$@" ;;
        sourcebuild|gotranform)
            ___x_cmd_build_v0_"$op" "$@" ;;
        *)
            ;;
    esac
}

___x_cmd_build_v0___exec(){
    :
}

___x_cmd_build_v0___download()(
    local download_url="${1:? download url is null}"
    local filename="${2:? filename is null}"
    x curl -L "${download_url}" -o "${filename}" || {
        build:error "download failed ：${download_url} "
        return 1
    }
)

___x_cmd_build_v0___unpack()(
    local filename="${1:? filename is null}"
    local file_uz_dir="${2}"
    build:info "x uzr ${filename} ${file_uz_dir}"
    x uzr "${filename}" "${file_uz_dir}" || {
        build:error "unzip ${filename} to ${file_uz_dir} fail"
    }
)

___x_cmd_build_v0___pack()(
    local build_target="${1}"
    [ -n "${build_target}" ] || {
        build:error "The path to the file to compress was not provided."
        return 1
    }
    local zip_name="${2}"

    [ -n "${zip_name}" ] || {
        local zip_format="${FORMAT:-"tar.xz"}"
        zip_name="${build_target}.${zip_format}"
    }
    build:info "x z ${zip_name} ${build_target}"
    if [ -d "${build_target}" ] || [ -f "${build_target}" ];then
        x z "${zip_name}" "${build_target}" >/dev/null
    else
        build:error "The target directory or file does not exist : ${build_target}"
        return 1
    fi
)

___x_cmd_build_v0___matedata(){
    [ -f metadate_check.yml ] || printf "%s\n" "${version}:" > metadate_check.yml
    printf "%s\n" "  ${2}:" >> metadate_check.yml
    local sum
    sum="$(x hashdir --sha512 "${1}")"
    printf "%s\n" "    sum: ${sum}" >> metadate_check.yml
    local sha256
    sha256="$(x sha256 "${2}")"
    printf "%s\n" "    sha256: ${sha256}" >> metadate_check.yml
}