63 lines
1.7 KiB
Bash
63 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
echo "[java] starting java devcontainer install"
|
|
|
|
# --------------------------------------------------
|
|
# Config
|
|
# --------------------------------------------------
|
|
RUNTIME_ROOT="/opt/zlh/runtime/java"
|
|
ARTIFACT_ROOT="/opt/zlh/devcontainer/java"
|
|
|
|
VERSION="${RUNTIME_VERSION:-17}"
|
|
|
|
SRC_DIR="${ARTIFACT_ROOT}/${VERSION}"
|
|
DEST_DIR="${RUNTIME_ROOT}/${VERSION}"
|
|
SYMLINK="${RUNTIME_ROOT}/current"
|
|
|
|
# --------------------------------------------------
|
|
# Guards
|
|
# --------------------------------------------------
|
|
if [ ! -d "${SRC_DIR}" ]; then
|
|
echo "[java][ERROR] artifact directory not found: ${SRC_DIR}"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -x "${DEST_DIR}/bin/java" ]; then
|
|
echo "[java] java ${VERSION} already installed"
|
|
else
|
|
ARCHIVE="$(ls ${SRC_DIR}/*.tar.gz 2>/dev/null | head -n1)"
|
|
if [ -z "${ARCHIVE}" ]; then
|
|
echo "[java][ERROR] no Java archive found in ${SRC_DIR}"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[java] installing java ${VERSION}"
|
|
mkdir -p "${DEST_DIR}"
|
|
|
|
TMP_DIR="$(mktemp -d)"
|
|
tar -xzf "${ARCHIVE}" -C "${TMP_DIR}"
|
|
|
|
# Java archives contain a single root dir
|
|
EXTRACTED_DIR="$(find ${TMP_DIR} -maxdepth 1 -type d -name 'jdk*' | head -n1)"
|
|
if [ -z "${EXTRACTED_DIR}" ]; then
|
|
echo "[java][ERROR] failed to locate extracted jdk directory"
|
|
exit 1
|
|
fi
|
|
|
|
mv "${EXTRACTED_DIR}"/* "${DEST_DIR}/"
|
|
rm -rf "${TMP_DIR}"
|
|
fi
|
|
|
|
# --------------------------------------------------
|
|
# Symlink current
|
|
# --------------------------------------------------
|
|
ln -sfn "${DEST_DIR}" "${SYMLINK}"
|
|
|
|
# --------------------------------------------------
|
|
# Verify
|
|
# --------------------------------------------------
|
|
"${SYMLINK}/bin/java" -version
|
|
|
|
echo "[java] java ${VERSION} install complete"
|