#!/usr/bin/env bash set -euo pipefail NODE_MAJOR_REQUIRED=22 NODESOURCE_SETUP_URL="https://deb.nodesource.com/setup_${NODE_MAJOR_REQUIRED}.x" SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)" if [[ ! -f "${REPO_ROOT}/package.json" ]]; then echo "Repo-Root nicht gefunden. Erwartet: ${REPO_ROOT}/package.json" exit 1 fi if ! command -v apt-get >/dev/null 2>&1; then echo "Dieses Setup-Script unterstuetzt aktuell Debian/Ubuntu mit apt-get." exit 1 fi SUDO=() if [[ "${EUID}" -ne 0 ]]; then if ! command -v sudo >/dev/null 2>&1; then echo "Bitte als root ausfuehren oder sudo installieren." exit 1 fi SUDO=(sudo) fi run_apt() { if [[ "${#SUDO[@]}" -gt 0 ]]; then "${SUDO[@]}" env DEBIAN_FRONTEND=noninteractive apt-get "$@" else DEBIAN_FRONTEND=noninteractive apt-get "$@" fi } run_as_root_preserve_env() { if [[ "${#SUDO[@]}" -gt 0 ]]; then "${SUDO[@]}" -E "$@" else "$@" fi } node_major() { node -p 'Number(process.versions.node.split(".")[0])' 2>/dev/null || echo 0 } echo "Installiere Basiswerkzeuge fuer die lokale Webapp..." run_apt update run_apt install -y ca-certificates curl gnupg git bash build-essential CURRENT_NODE_MAJOR="$(node_major)" if [[ "${CURRENT_NODE_MAJOR}" -lt "${NODE_MAJOR_REQUIRED}" ]]; then echo "Installiere Node.js ${NODE_MAJOR_REQUIRED}.x ueber NodeSource..." TMP_SETUP="$(mktemp)" curl -fsSL "${NODESOURCE_SETUP_URL}" -o "${TMP_SETUP}" run_as_root_preserve_env bash "${TMP_SETUP}" rm -f "${TMP_SETUP}" run_apt install -y nodejs else echo "Node.js $(node --version) ist bereits kompatibel." fi CURRENT_NODE_MAJOR="$(node_major)" if [[ "${CURRENT_NODE_MAJOR}" -lt "${NODE_MAJOR_REQUIRED}" ]]; then echo "Node.js >= ${NODE_MAJOR_REQUIRED} wird benoetigt, aktiv ist aber: $(node --version 2>/dev/null || echo nicht installiert)" exit 1 fi if ! command -v npm >/dev/null 2>&1; then echo "npm wurde nicht gefunden. Bitte Node.js/npm Installation pruefen." exit 1 fi echo "Installiere npm-Abhaengigkeiten im Repo..." cd "${REPO_ROOT}" if [[ -f package-lock.json ]]; then npm ci --include=dev else npm install --include=dev fi chmod +x "${REPO_ROOT}/scripts/start-local.sh" echo echo "Fertig. Zum Starten noch DATABASE_URL setzen und dann ausfuehren:" echo " npm run serve:local"