From be507cb2296923178373070b2092479b223a6e61 Mon Sep 17 00:00:00 2001 From: billisdead Date: Sun, 24 May 2026 15:33:40 +0200 Subject: [PATCH] =?UTF-8?q?dev-local.sh=20:=20installation=20automatique?= =?UTF-8?q?=20des=20pr=C3=A9requis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Venv Python : création automatique si absent (détecte python3.11, python3, python >= 3.9 ; erreur guidée si introuvable) - Dépendances pip : pip install -r requirements.txt à chaque lancement (no-op si rien n'a changé, garantit la cohérence après un pull) - pnpm : installation automatique via corepack (si dispo) ou npm - Node.js : non installable sans root — message d'erreur avec commandes exactes pour Rocky/RHEL, Debian/Ubuntu et nvm Co-Authored-By: Claude Sonnet 4.6 --- scripts/dev-local.sh | 90 +++++++++++++++++++++++++++++++++----------- 1 file changed, 68 insertions(+), 22 deletions(-) diff --git a/scripts/dev-local.sh b/scripts/dev-local.sh index ad85ac5..dcba467 100755 --- a/scripts/dev-local.sh +++ b/scripts/dev-local.sh @@ -3,19 +3,18 @@ # # Usage : bash scripts/dev-local.sh # +# Le script installe automatiquement les prérequis manquants (venv Python, +# dépendances pip, pnpm, node_modules). Node.js et PostgreSQL doivent être +# présents au préalable (installation système, voir docs/INSTALL_ROCKY.md). +# # Pour accéder à l'interface depuis votre machine locale, ouvrez un tunnel SSH : # ssh -L 5173:localhost:5173 -L 8080:localhost:8080 utilisateur@votre-serveur # Puis ouvrez http://localhost:5173 dans votre navigateur. -# -# Prérequis : -# - PostgreSQL en cours d'exécution et DATABASE_URL configurée dans .env -# - Virtualenv Python présent (.venv/) — voir section 7 de docs/INSTALL_ROCKY.md -# - pnpm installé (npm install -g pnpm) ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ENV_FILE="$ROOT/.env" -# ─── Vérifications préalables ──────────────────────────────────────────────── +# ─── Fichier .env ───────────────────────────────────────────────────────────── if [ ! -f "$ENV_FILE" ]; then echo "Erreur : fichier .env introuvable." @@ -24,20 +23,6 @@ if [ ! -f "$ENV_FILE" ]; then exit 1 fi -if [ ! -f "$ROOT/.venv/bin/python" ]; then - echo "Erreur : virtualenv Python introuvable (.venv/bin/python)." - echo "Consultez la section 7 de docs/INSTALL_ROCKY.md pour le créer." - exit 1 -fi - -if ! command -v pnpm &>/dev/null; then - echo "Erreur : pnpm introuvable." - echo "Installez-le avec : npm install -g pnpm" - exit 1 -fi - -# ─── Chargement de l'environnement ─────────────────────────────────────────── - set -a # shellcheck disable=SC1090 source "$ENV_FILE" @@ -46,14 +31,75 @@ set +a FLASK_PORT="${PORT:-8080}" VITE_PORT=5173 +# ─── Python : venv + dépendances pip ───────────────────────────────────────── + +if [ ! -f "$ROOT/.venv/bin/python" ]; then + echo "→ Création du virtualenv Python…" + + # Cherche python3.11, puis python3, puis python (>= 3.9) + PYTHON_BIN="" + for bin in python3.11 python3 python; do + if command -v "$bin" &>/dev/null \ + && "$bin" -c "import sys; sys.exit(0 if sys.version_info >= (3, 9) else 1)" 2>/dev/null; then + PYTHON_BIN="$bin" + break + fi + done + + if [ -z "$PYTHON_BIN" ]; then + echo "Erreur : Python 3.9+ introuvable." + echo "Installez Python 3.11 :" + echo " Rocky/RHEL → dnf install -y python3.11" + echo " Debian/Ubuntu → apt install -y python3.11" + exit 1 + fi + + "$PYTHON_BIN" -m venv "$ROOT/.venv" + echo " Virtualenv créé avec $("$ROOT/.venv/bin/python" --version)." +fi + +echo "→ Vérification des dépendances Python…" +"$ROOT/.venv/bin/pip" install --upgrade pip --quiet +"$ROOT/.venv/bin/pip" install -r "$ROOT/artifacts/flask-api/requirements.txt" --quiet +echo " OK." + +# ─── Node.js ────────────────────────────────────────────────────────────────── + +if ! command -v node &>/dev/null; then + echo "Erreur : Node.js introuvable (installation système requise)." + echo "Installez Node.js 20 :" + echo " Rocky/RHEL → curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -" + echo " dnf install -y nodejs" + echo " Debian/Ubuntu → curl -fsSL https://deb.nodesource.com/setup_20.x | bash -" + echo " apt install -y nodejs" + echo " nvm (universel) → https://github.com/nvm-sh/nvm" + exit 1 +fi + +# ─── pnpm ───────────────────────────────────────────────────────────────────── + +if ! command -v pnpm &>/dev/null; then + echo "→ Installation de pnpm…" + if command -v corepack &>/dev/null; then + corepack enable + corepack prepare pnpm@latest --activate + elif command -v npm &>/dev/null; then + npm install -g pnpm --quiet + else + echo "Erreur : ni corepack ni npm disponibles pour installer pnpm." + exit 1 + fi + echo " pnpm $(pnpm --version) installé." +fi + # ─── Dépendances Node ───────────────────────────────────────────────────────── if [ ! -d "$ROOT/node_modules" ]; then - echo "Installation des dépendances Node (première exécution)…" + echo "→ Installation des dépendances Node…" (cd "$ROOT" && pnpm install --frozen-lockfile) fi -# ─── Bannière ──────────────────────────────────────────────────────────────── +# ─── Bannière ───────────────────────────────────────────────────────────────── echo "" echo "┌──────────────────────────────────────────────────────────────┐"