zlh-agent/scripts/devcontainer/dotnet/install.sh
2026-03-15 11:06:08 +00:00

55 lines
1.4 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
: "${RUNTIME_VERSION:?RUNTIME_VERSION required}"
RUNTIME="dotnet"
RUNTIME_ROOT="/opt/zlh/runtimes/${RUNTIME}"
DEST_DIR="${RUNTIME_ROOT}/${RUNTIME_VERSION}"
CURRENT_LINK="${RUNTIME_ROOT}/current"
ZLH_ARTIFACT_BASE_URL="${ZLH_ARTIFACT_BASE_URL:-http://10.60.0.251:8080}"
INSTALLER_URL="${ZLH_ARTIFACT_BASE_URL%/}/devcontainer/dotnet/dotnet-install.sh"
INSTALLER_TMP="/tmp/dotnet-install.sh"
log() {
echo "[zlh-installer:${RUNTIME}] $*"
}
fail() {
echo "[zlh-installer:${RUNTIME}] ERROR: $*" >&2
exit 1
}
download_installer() {
log "Downloading ${INSTALLER_URL}"
if command -v curl >/dev/null 2>&1; then
curl -fL "${INSTALLER_URL}" -o "${INSTALLER_TMP}"
elif command -v wget >/dev/null 2>&1; then
wget -O "${INSTALLER_TMP}" "${INSTALLER_URL}"
else
fail "curl or wget is required"
fi
chmod +x "${INSTALLER_TMP}"
}
mkdir -p "${RUNTIME_ROOT}"
if [[ -d "${DEST_DIR}" ]]; then
log "Version already installed at ${DEST_DIR}"
else
mkdir -p "${DEST_DIR}"
download_installer
log "Installing dotnet ${RUNTIME_VERSION} into ${DEST_DIR}"
bash "${INSTALLER_TMP}" --channel "${RUNTIME_VERSION}" --install-dir "${DEST_DIR}"
fi
ln -sfn "${DEST_DIR}" "${CURRENT_LINK}"
cat >/etc/profile.d/zlh-dotnet.sh <<EOF
export PATH="${CURRENT_LINK}:\$PATH"
EOF
chmod +x /etc/profile.d/zlh-dotnet.sh
chmod -R 755 "${DEST_DIR}"
rm -f "${INSTALLER_TMP}"
log "Install complete"