forked from joschi/java-metadata
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsemeru25.bash
More file actions
executable file
·116 lines (97 loc) · 3.28 KB
/
semeru25.bash
File metadata and controls
executable file
·116 lines (97 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env bash
set -e
set -Euo pipefail
TEMP_DIR=$(mktemp -d)
trap 'rm -rf ${TEMP_DIR}' EXIT
if [[ "$#" -lt 2 ]]
then
echo "Usage: ${0} metadata-directory checksum-directory"
exit 1
fi
# shellcheck source=bin/functions.bash
source "$(dirname "${0}")/functions.bash"
VENDOR='semeru'
METADATA_DIR="${1}/${VENDOR}"
CHECKSUM_DIR="${2}/${VENDOR}"
ensure_directory "${METADATA_DIR}"
ensure_directory "${CHECKSUM_DIR}"
function normalize_release_type {
case "${1}" in
*) echo 'ga'
;;
esac
}
function download {
local tag_name="${1}"
local asset_name="${2}"
local filename="${asset_name}"
local url="https://github.com/ibmruntimes/semeru25-binaries/releases/download/${tag_name}/${asset_name}"
local metadata_file="${METADATA_DIR}/${filename}.json"
local archive="${TEMP_DIR}/${filename}"
if [[ -f "${metadata_file}" ]]
then
echo "Skipping ${filename}"
else
download_file "${url}" "${archive}" || return 1
local JAVA_VERSION=""
local OPENJ9_VERSION=""
#local RPM_VERSION=""
local RELEASE_TYPE="ga"
local IMAGE_TYPE=""
local OS=""
local ARCH=""
local EXT=""
local regex
# shellcheck disable=SC2016
version_regex='s/^jdk-(.*)_openj9-(.*)$/JAVA_VERSION="$1" OPENJ9_VERSION="$2"/g'
eval "$(perl -pe "${version_regex}" <<< "${tag_name}")"
local VERSION="${JAVA_VERSION}_openj9-${OPENJ9_VERSION}"
if [[ "${filename}" =~ \.rpm$ ]]
then
OS='linux'
EXT='rpm'
# shellcheck disable=SC2016
regex='s/^ibm-semeru-open-[0-9]+-(jre|jdk)-(.+)\.(x86_64|s390x|ppc64|ppc64le|aarch64)\.rpm$/IMAGE_TYPE="$1" RPM_VERSION="$2" ARCH="$3"/g'
else
# shellcheck disable=SC2016
regex='s/^ibm-semeru-open-(jre|jdk)_(x64|x86-32|s390x|ppc64|ppc64le|aarch64)_(aix|linux|mac|windows)_.+_openj9-.+\.(tar\.gz|zip|msi)$/IMAGE_TYPE="$1" ARCH="$2" OS="$3" EXT="$4"/g'
fi
# Parse meta-data from file name
eval "$(perl -pe "${regex}" <<< "${asset_name}")"
local json
json="$(metadata_json \
"${VENDOR}" \
"${filename}" \
"$(normalize_release_type "${RELEASE_TYPE}")" \
"${VERSION}" \
"${JAVA_VERSION}" \
'openj9' \
"$(normalize_os "${OS}")" \
"$(normalize_arch "${ARCH}")" \
"${EXT}" \
"${IMAGE_TYPE}" \
'' \
"${url}" \
"$(hash_file 'md5' "${archive}" "${CHECKSUM_DIR}")" \
"$(hash_file 'sha1' "${archive}" "${CHECKSUM_DIR}")" \
"$(hash_file 'sha256' "${archive}" "${CHECKSUM_DIR}")" \
"$(hash_file 'sha512' "${archive}" "${CHECKSUM_DIR}")" \
"$(file_size "${archive}")" \
"${filename}"
)"
echo "${json}" > "${metadata_file}"
rm -f "${archive}"
fi
}
RELEASE_FILE="${TEMP_DIR}/releases-${VENDOR}-25.json"
download_github_releases 'ibmruntimes' 'semeru25-binaries' "${RELEASE_FILE}"
versions=$(jq -r '.[].tag_name' "${RELEASE_FILE}" | sort -V)
for version in ${versions}
do
assets=$(jq -r ".[] | select(.prerelease == false) | select(.tag_name == \"${version}\") | .assets[] | select(.name | endswith(\"zip\") or endswith(\"tar.gz\") or endswith(\"msi\") or endswith(\"rpm\")) | select(.name | contains(\"debugimage\") | not) | select(.name | contains(\"testimage\") | not) | select(.name | contains(\"certified\") | not) | .name" "${RELEASE_FILE}")
for asset in ${assets}
do
download "${version}" "${asset}" || echo "Cannot download ${asset}"
done
done
jq -s -S . "${METADATA_DIR}"/ibm-semeru-open-*.json > "${METADATA_DIR}/all.json"