61 lines
1.4 KiB
Bash
61 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
echo "[code-server] starting install"
|
|
|
|
# --------------------------------------------------
|
|
# Config
|
|
# --------------------------------------------------
|
|
ADDON_ROOT="/opt/zlh/addons/code-server"
|
|
ARTIFACT_DIR="/opt/zlh/addons/code-server"
|
|
MARKER="/opt/zlh/.zlh/addons/code-server.installed"
|
|
|
|
mkdir -p "$(dirname "${MARKER}")"
|
|
|
|
# --------------------------------------------------
|
|
# Idempotency
|
|
# --------------------------------------------------
|
|
if [ -f "${MARKER}" ]; then
|
|
echo "[code-server] already installed"
|
|
exit 0
|
|
fi
|
|
|
|
ARCHIVE="$(ls ${ARTIFACT_DIR}/code-server.* 2>/dev/null | head -n1)"
|
|
if [ -z "${ARCHIVE}" ]; then
|
|
echo "[code-server][ERROR] artifact not found"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[code-server] extracting ${ARCHIVE}"
|
|
mkdir -p "${ADDON_ROOT}"
|
|
|
|
TMP_DIR="$(mktemp -d)"
|
|
|
|
case "${ARCHIVE}" in
|
|
*.tar.gz)
|
|
tar -xzf "${ARCHIVE}" -C "${TMP_DIR}"
|
|
;;
|
|
*.zip)
|
|
unzip -q "${ARCHIVE}" -d "${TMP_DIR}"
|
|
;;
|
|
*)
|
|
echo "[code-server][ERROR] unsupported archive format"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
EXTRACTED_DIR="$(find ${TMP_DIR} -maxdepth 1 -type d -name 'code-server*' | head -n1)"
|
|
if [ -z "${EXTRACTED_DIR}" ]; then
|
|
echo "[code-server][ERROR] failed to locate extracted directory"
|
|
exit 1
|
|
fi
|
|
|
|
mv "${EXTRACTED_DIR}"/* "${ADDON_ROOT}/"
|
|
rm -rf "${TMP_DIR}"
|
|
|
|
chmod +x "${ADDON_ROOT}/bin/code-server"
|
|
|
|
touch "${MARKER}"
|
|
|
|
echo "[code-server] install complete"
|