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