diff --git a/bin/oracle.bash b/bin/oracle.bash index 5a70d832496..34730241741 100755 --- a/bin/oracle.bash +++ b/bin/oracle.bash @@ -24,33 +24,6 @@ ensure_directory "${CHECKSUM_DIR}" # shellcheck disable=SC2016 REGEX='s/^jdk-([0-9+.]{2,})_(linux|macos|windows)-(x64|aarch64)_bin\.(tar\.gz|zip|msi|dmg|exe|deb|rpm)$/VERSION="$1" OS="$2" ARCH="$3" ARCHIVE="$4"/g' -function current_releases { - local version="$1" - - # https://www.oracle.com/java/technologies/jdk-script-friendly-urls/ - local -a params=( - 'linux,aarch64,rpm:tar.gz' - 'linux,x64,deb:rpm:tar.gz' - 'macos,aarch64,dmg:tar.gz' - 'macos,x64,dmg:tar.gz' - 'windows,x64,exe:msi:zip' - ) - for param in "${params[@]}" - do - local os - os=$(cut -f1 -d, <<<"$param") - local arch - arch=$(cut -f2 -d, <<<"$param") - local ext_list - ext_list=$(cut -f3 -d, <<<"$param") - - for ext in ${ext_list//:/ } - do - echo "jdk-${version}_${os}-${arch}_bin.${ext}" - done - done -} - function download_and_parse { MAJOR_VERSION="${1}" INDEX_FILE="${TEMP_DIR}/index${MAJOR_VERSION}.html" @@ -58,14 +31,8 @@ function download_and_parse { download_file "https://www.oracle.com/java/technologies/javase/jdk${MAJOR_VERSION}-archive-downloads.html" "${INDEX_FILE}" JDK_FILES=$(grep -o -E '' "${INDEX_FILE}" | perl -pe 's##$1#g' | sort -V) - CURRENT_RELEASE=$(curl -sSf https://www.oracle.com/java/technologies/downloads/ | (grep "

JDK Development Kit (.+) downloads

#$1#g') - JDK_FILES_CURRENT="" - if [[ -n "${CURRENT_RELEASE}" ]] - then - JDK_FILES_CURRENT=$(current_releases "${CURRENT_RELEASE}") - fi - - for JDK_FILE in ${JDK_FILES} ${JDK_FILES_CURRENT} + + for JDK_FILE in ${JDK_FILES} do if [[ -z "${JDK_FILE}" ]] then @@ -131,4 +98,63 @@ do download_and_parse "$version" done -jq -s -S . "${METADATA_DIR}"/jdk-*.json > "${METADATA_DIR}/all.json" +# Latest +download_file "https://java.oraclecloud.com/javaVersions" "${TEMP_DIR}/latest-versions.json" +for version in $(jq -r '.items[].latestReleaseVersion' "${TEMP_DIR}/latest-versions.json") +do + download_file "https://java.oraclecloud.com/javaReleases/${version}" "${TEMP_DIR}/release-${version}.json" + for JDK_URL in $(jq -r '.artifacts[].downloadUrl' "${TEMP_DIR}/release-${version}.json") + do + JDK_FILE=$(basename "${JDK_URL}") + JDK_ARCHIVE="${TEMP_DIR}/${JDK_FILE}" + METADATA_FILE="${METADATA_DIR}/${JDK_FILE}.json" + if [[ -f "${METADATA_FILE}" ]] + then + echo "Skipping ${JDK_FILE}" + else + if ! download_file "${JDK_URL}" "${JDK_ARCHIVE}"; + then + echo "Failed to download ${JDK_FILE}, skipping" + continue + fi + VERSION="" + OS="" + ARCH="" + ARCHIVE="" + + # Parse meta-data from file name + PARSED_NAME=$(perl -pe "${REGEX}" <<< "${JDK_FILE}") + if [[ "${PARSED_NAME}" = "${JDK_FILE}" ]] + then + echo "Regular expression didn't match ${JDK_FILE}" + continue + else + eval "${PARSED_NAME}" + fi + + METADATA_JSON="$(metadata_json \ + "${VENDOR}" \ + "${JDK_FILE}" \ + "ga" \ + "${VERSION}" \ + "${VERSION}" \ + 'hotspot' \ + "$(normalize_os "${OS}")" \ + "$(normalize_arch "${ARCH}")" \ + "${ARCHIVE}" \ + "jdk" \ + "" \ + "${JDK_URL}" \ + "$(hash_file 'md5' "${JDK_ARCHIVE}" "${CHECKSUM_DIR}")" \ + "$(hash_file 'sha1' "${JDK_ARCHIVE}" "${CHECKSUM_DIR}")" \ + "$(hash_file 'sha256' "${JDK_ARCHIVE}" "${CHECKSUM_DIR}")" \ + "$(hash_file 'sha512' "${JDK_ARCHIVE}" "${CHECKSUM_DIR}")" \ + "$(file_size "${JDK_ARCHIVE}")" \ + "${JDK_FILE}" + )" + + echo "${METADATA_JSON}" > "${METADATA_FILE}" + rm -f "${JDK_ARCHIVE}" + fi + done +done