2020-04-26 22:23:58 +08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
set -Euo pipefail
|
|
|
|
|
|
|
|
# See https://joschi.github.io/java-metadata/ for supported values
|
|
|
|
LIST_OS="linux macosx"
|
2021-03-11 22:15:28 +08:00
|
|
|
LIST_ARCH="x86_64 aarch64 arm32-vfp-hflt"
|
2023-01-06 23:36:36 +08:00
|
|
|
LIST_RELEASE_TYPE="ga ea"
|
2020-04-26 22:23:58 +08:00
|
|
|
|
|
|
|
DATA_DIR="./data"
|
|
|
|
|
|
|
|
if [[ ! -d "${DATA_DIR}" ]]
|
|
|
|
then
|
|
|
|
mkdir "${DATA_DIR}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
function metadata_url {
|
|
|
|
local os=$1
|
|
|
|
local arch=$2
|
2023-01-06 23:36:36 +08:00
|
|
|
local release=$3
|
2020-04-26 22:23:58 +08:00
|
|
|
|
2023-01-06 23:36:36 +08:00
|
|
|
echo "https://joschi.github.io/java-metadata/metadata/${release}/${os}/${arch}.json"
|
2020-04-26 22:23:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
function fetch_metadata {
|
|
|
|
local os=$1
|
|
|
|
local arch=$2
|
2023-01-06 23:36:36 +08:00
|
|
|
local release=$3
|
2020-04-26 22:23:58 +08:00
|
|
|
|
|
|
|
local args=('-s' '-f' '--compressed' '-H' "Accept: application/json")
|
|
|
|
if [[ -n "${GITHUB_API_TOKEN:-}" ]]; then
|
|
|
|
args+=('-H' "Authorization: token $GITHUB_API_TOKEN")
|
|
|
|
fi
|
|
|
|
|
2023-01-06 23:36:36 +08:00
|
|
|
local url
|
|
|
|
url=$(metadata_url "$os" "$arch" "$release")
|
|
|
|
curl "${args[@]}" -o "${DATA_DIR}/jdk-${os}-${arch}-${release}.json" "${url}"
|
2020-04-26 22:23:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
for OS in $LIST_OS
|
|
|
|
do
|
|
|
|
for ARCH in $LIST_ARCH
|
|
|
|
do
|
2023-01-06 23:36:36 +08:00
|
|
|
for RELEASE_TYPE in $LIST_RELEASE_TYPE
|
|
|
|
do
|
|
|
|
fetch_metadata "$OS" "$ARCH" "$RELEASE_TYPE"
|
|
|
|
done
|
|
|
|
cat "${DATA_DIR}/jdk-${OS}-${ARCH}"-*.json | jq -s 'add' > "${DATA_DIR}/jdk-${OS}-${ARCH}-all.json"
|
|
|
|
ln -s "jdk-${OS}-${ARCH}-ga.json" "${DATA_DIR}/jdk-${OS}-${ARCH}.json"
|
2020-04-26 22:23:58 +08:00
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
RELEASE_QUERY='.[]
|
|
|
|
| select(.file_type | IN("tar.gz", "zip"))
|
|
|
|
| .["features"] = (.features | map(select(IN("musl", "javafx", "lite", "large_heap"))))
|
2021-08-23 03:12:57 +08:00
|
|
|
| [([.vendor, if (.image_type == "jre") then .image_type else empty end, if (.jvm_impl == "openj9") then .jvm_impl else empty end, if ((.features | length) == 0) then empty else (.features | join("-")) end, .version] | join("-")), .filename, .url, .sha256]
|
2020-04-26 22:23:58 +08:00
|
|
|
| @tsv'
|
|
|
|
for FILE in "${DATA_DIR}"/*.json
|
|
|
|
do
|
|
|
|
TSV_FILE="$(basename "${FILE}" .json).tsv"
|
2023-01-06 23:36:36 +08:00
|
|
|
jq -r "${RELEASE_QUERY}" "${FILE}" | sort -V > "${DATA_DIR}/${TSV_FILE}"
|
2020-04-26 22:23:58 +08:00
|
|
|
done
|