dev-local.sh : installation automatique des prérequis
- 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 <noreply@anthropic.com>
This commit is contained in:
+68
-22
@@ -3,19 +3,18 @@
|
|||||||
#
|
#
|
||||||
# Usage : bash scripts/dev-local.sh
|
# 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 :
|
# 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
|
# ssh -L 5173:localhost:5173 -L 8080:localhost:8080 utilisateur@votre-serveur
|
||||||
# Puis ouvrez http://localhost:5173 dans votre navigateur.
|
# 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)"
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
ENV_FILE="$ROOT/.env"
|
ENV_FILE="$ROOT/.env"
|
||||||
|
|
||||||
# ─── Vérifications préalables ────────────────────────────────────────────────
|
# ─── Fichier .env ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
if [ ! -f "$ENV_FILE" ]; then
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
echo "Erreur : fichier .env introuvable."
|
echo "Erreur : fichier .env introuvable."
|
||||||
@@ -24,20 +23,6 @@ if [ ! -f "$ENV_FILE" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
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
|
set -a
|
||||||
# shellcheck disable=SC1090
|
# shellcheck disable=SC1090
|
||||||
source "$ENV_FILE"
|
source "$ENV_FILE"
|
||||||
@@ -46,14 +31,75 @@ set +a
|
|||||||
FLASK_PORT="${PORT:-8080}"
|
FLASK_PORT="${PORT:-8080}"
|
||||||
VITE_PORT=5173
|
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 ─────────────────────────────────────────────────────────
|
# ─── Dépendances Node ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
if [ ! -d "$ROOT/node_modules" ]; then
|
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)
|
(cd "$ROOT" && pnpm install --frozen-lockfile)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ─── Bannière ────────────────────────────────────────────────────────────────
|
# ─── Bannière ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "┌──────────────────────────────────────────────────────────────┐"
|
echo "┌──────────────────────────────────────────────────────────────┐"
|
||||||
|
|||||||
Reference in New Issue
Block a user