#!/bin/sh

set -e
set -u

libexec="$(cd "$(dirname "$0")"; pwd)"
top="${libexec}/.."
src="${2:-"${top}/src"}"
version="${1:-$("${libexec}/metadata" node_version)}"

check_sum() {
    filename="${1}"
    expected="${2}"
    if command -v shasum >/dev/null; then
        echo "${expected}  ${filename}" | shasum -c
    elif command -v gsha256sum >/dev/null; then
        echo "${expected}  ${filename}" | gsha256sum -c
    else
        echo "${expected}  ${filename}" | sha256sum -c
    fi
}

download() {
    file="${1}"
    url="${2}"

    platform="$(uname)"

    case "${platform}" in
        SunOS)
            CURLOPTS="${CURLOPTS:--k}"
            ;;
        *)
            CURLOPTS="${CURLOPTS:-}"
            ;;
    esac

    if command -v curl >/dev/null 2>&1; then
        # shellcheck disable=SC2086
        curl ${CURLOPTS} -L -o "${file}" "${url}"
    else
        wget -O "${file}" "${url}"
    fi
}

if [ -f "${top}/sums/v${version}.sum" ]; then
    sha256sum="$(cat "${top}/sums/v${version}.sum")"
else
    sha256sum='0000000000000000000000000000000000000000000000000000000000000000'
fi

if [ -f "${src}/node-v${version}.tar.gz" ]; then
    if check_sum "${src}/node-v${version}.tar.gz" "${sha256sum}"; then
        exit 0
    fi
fi

mkdir -p "${src}"
download "${src}/node-v${version}.tar.gz" "https://nodejs.org/dist/v${version}/node-v${version}.tar.gz"
check_sum "${src}/node-v${version}.tar.gz" "${sha256sum}" && exit 0
