vcpkg_minimum_required(VERSION 2022-10-12) # for ${VERSION}
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)

set(PROGNAME node)

set(BREW_PACKAGE_NAME "${PROGNAME}")
set(APT_PACKAGE_NAME "${PROGNAME}")

if(VCPKG_CROSSCOMPILING)
    message(FATAL_ERROR "This is a host only port!")
endif()

set(BASE_URL "https://nodejs.org/dist/v${VERSION}/")
set(ARCHIVE "")
set(ARCHIVE_EXT "")

if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
    set(ARCHIVE "node-v${VERSION}-win-arm64")
    set(ARCHIVE_EXT ".zip")
    set(HASH dd1535671b24cfbfa1e8fadac50fb7dabc55e866760186a7718f667b667998697b5b98c7370bc3382d6357922f270281609893271ef8b4df93bad1b66818ec6b)
elseif(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
    set(ARCHIVE "node-v${VERSION}-win-x64")
    set(ARCHIVE_EXT ".zip")
    set(HASH 134bdd7a27c95dfef79dbac85a86a22fa5d124458dd0cefd940f341ca7cfb55fab4dfe952960a36c3aa99bc4431c667dee193f54f40e4940d3cb33131f222480)
elseif(VCPKG_TARGET_IS_OSX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
    set(ARCHIVE "node-v${VERSION}-darwin-x64")
    set(ARCHIVE_EXT ".tar.gz")
    set(HASH 4da7b1d0ee71849db2146e5557dc50386bb40f1a4972eefa975f4d10831d24b18ec3416d6089a945201dccd826fed13f4c1ac95d7835a395e954122a01eb3887)
elseif(VCPKG_TARGET_IS_OSX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
    set(ARCHIVE "node-v${VERSION}-darwin-arm64")
    set(ARCHIVE_EXT ".tar.gz")
    set(HASH a9be1e1403a730f3283e43306f1bb5f073c18d035c78e38b12ae16639ee8f985596dfecd139b7f75774bc9e3f9d8972aba5e5deaf36d1273116042cfefb64983)
elseif(VCPKG_TARGET_IS_LINUX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
    set(ARCHIVE "node-v${VERSION}-linux-x64")
    set(ARCHIVE_EXT ".tar.xz")
    set(HASH b8d2f2460ee35e9952f5b39d416bc0dce58f12a2ddf885a279f12deeb4130db469d5a0b9edd585c401f5645a85e00f343005a290e86d3b895fb7a87605c413f7)
elseif(VCPKG_TARGET_IS_LINUX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
    set(ARCHIVE "node-v${VERSION}-linux-arm64")
    set(ARCHIVE_EXT ".tar.xz")
    set(HASH 22a05a66c6bb7c1bff923ae1b6d9975ca76c37e574d4e979f3d194f54f0bee62e30fbc15e5558acf41ed4b575a31c55a0b7cdeb01a53749f3928cc51550226c3)
else()
    message(FATAL_ERROR "Target not yet supported by '${PORT}'")
endif()
set(URL "${BASE_URL}${ARCHIVE}${ARCHIVE_EXT}")
message(STATUS "URL: '${URL}'")

vcpkg_download_distfile(ARCHIVE_PATH
  URLS "${URL}"
  SHA512 "${HASH}"
  FILENAME "${ARCHIVE}${ARCHIVE_EXT}"
  #ALWAYS_REDOWNLOAD
  #SKIP_SHA512
)

file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools")
message(STATUS "ARCHIVE_PATH: '${ARCHIVE_PATH}'")

vcpkg_execute_in_download_mode(
    COMMAND ${CMAKE_COMMAND} -E tar xzf "${ARCHIVE_PATH}"
    WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools"
)

file(RENAME "${CURRENT_PACKAGES_DIR}/tools/${ARCHIVE}" "${CURRENT_PACKAGES_DIR}/tools/node")

# Do not break code signatures
if(VCPKG_TARGET_IS_OSX)
    set(VCPKG_FIXUP_MACHO_RPATH OFF)
endif()
