-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdev-env-setup.sh
More file actions
80 lines (70 loc) · 2.73 KB
/
Copy pathdev-env-setup.sh
File metadata and controls
80 lines (70 loc) · 2.73 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
#!/bin/bash
set -euo pipefail
# ============================================
# vidium dev environment setup
# Ubuntu 24.04 x86_64
# Run as regular user: bash dev-env-setup.sh
# ============================================
ARCH="$(uname -m)"
if [ "${ARCH}" != "x86_64" ]; then
echo "ERROR: dev-env-setup.sh supports only Ubuntu 24.04 x86_64; detected architecture: ${ARCH}." >&2
exit 1
fi
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
VERSION_FILE="${PROJECT_DIR}/scripts/setup/dependency-versions.sh"
if [ ! -f "${VERSION_FILE}" ]; then
echo "ERROR: dependency version file is missing: ${VERSION_FILE}" >&2
exit 1
fi
source "${VERSION_FILE}"
NODE_TARBALL="node-v${NODE_VERSION}-linux-x64.tar.gz"
NODE_BASE="${HOME}/.local/share/vidium-node"
NODE_DIR="${NODE_BASE}/node-v${NODE_VERSION}-linux-x64"
NODE_LINK="${NODE_BASE}/node"
NODE_BIN="${NODE_LINK}/bin/node"
NPM_BIN="${NODE_LINK}/bin/npm"
NPM_PREFIX="${HOME}/.local/share/vidium-npm"
USER_BIN="${HOME}/.local/bin"
NODE_TMP=
cleanup() {
if [ -n "${NODE_TMP}" ]; then
rm -f "${NODE_TMP}"
fi
}
trap cleanup EXIT
if [ "$(id -u)" -eq 0 ]; then
echo "ERROR: dev-env-setup.sh must run as a regular user, not root."
exit 1
fi
echo "=== Installing Node.js ${NODE_VERSION} ==="
mkdir -p "${NODE_BASE}" "${USER_BIN}"
NODE_TMP="$(mktemp)"
curl -fsSL "https://nodejs.org/download/release/v${NODE_VERSION}/${NODE_TARBALL}" -o "${NODE_TMP}"
echo "${NODE_SHA256} ${NODE_TMP}" | sha256sum -c -
tar -xzf "${NODE_TMP}" -C "${NODE_BASE}"
rm -f "${NODE_TMP}"
NODE_TMP=
ln -sfn "${NODE_DIR}" "${NODE_LINK}"
ln -sfn "${NODE_LINK}/bin/node" "${USER_BIN}/node"
ln -sfn "${NODE_LINK}/bin/npm" "${USER_BIN}/npm"
ln -sfn "${NODE_LINK}/bin/npx" "${USER_BIN}/npx"
echo "Node.js: $(${NODE_BIN} --version)"
echo "npm: $(${NPM_BIN} --version)"
echo "=== Installing TypeScript and Biome (global) ==="
"${NPM_BIN}" install --global --prefix "${NPM_PREFIX}" "typescript@${TYPESCRIPT_VERSION}" "@biomejs/biome@${BIOME_VERSION}"
ln -sfn "${NPM_PREFIX}/bin/tsc" "${USER_BIN}/tsc"
ln -sfn "${NPM_PREFIX}/bin/biome" "${USER_BIN}/biome"
echo "tsc: $("${USER_BIN}/tsc" --version)"
echo "biome: $("${USER_BIN}/biome" --version)"
echo "=== Installing project development-only test tools ==="
"${NPM_BIN}" ci --ignore-scripts --no-audit --no-fund --prefix "${PROJECT_DIR}"
echo ""
echo "=== Done ==="
echo " Add ${USER_BIN} to PATH if it is not already there."
echo " node --run check — type check"
echo " node --run lint — lint"
echo " node --run format:check — check formatting"
echo " node --run format — rewrite formatting"
echo " node --run test — tests"
echo " node --run test:coverage:server — server tests with coverage thresholds"
echo " VIDIUM_CHROMIUM_PATH=/path/to/chromium node --run test:browser — browser tests"