#!/usr/bin/env sh set -euo pipefail # Déterminer la racine du projet (4NK_env) relativement à ce script SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" ROOT_DIR="$(cd "$SCRIPT_DIR/../../../.." && pwd)" REPO_URL="https://git.4nkweb.com/4nk/4NK_vault.git" VAULT_ROOT="$ROOT_DIR/vault" SDK_DIR="$VAULT_ROOT/sdk-client" CONFS_DIR="$ROOT_DIR/confs" VAULT_ENV_FILE="$VAULT_ROOT/.env" SYNC_JS="$ROOT_DIR/scripts/sync-vault-configs.js" # 0) Charger l'env Vault si présent (VAULT_BASE_URL, VAULT_USER/VAULT_USER_ID, VAULT_ENV, etc.) if [ -f "$VAULT_ENV_FILE" ]; then set -a . "$VAULT_ENV_FILE" set +a fi # 1) Cloner / mettre à jour le dépôt directement dans vault/ mkdir -p "$VAULT_ROOT" if [ -d "$VAULT_ROOT/.git" ]; then echo "[git] Mise à jour du dépôt existant dans $VAULT_ROOT" git -C "$VAULT_ROOT" remote set-url origin "$REPO_URL" 2>/dev/null || true git -C "$VAULT_ROOT" fetch --prune origin git -C "$VAULT_ROOT" checkout -B master origin/master git -C "$VAULT_ROOT" reset --hard origin/master else echo "[git] Initialisation du dépôt dans $VAULT_ROOT" git -C "$VAULT_ROOT" init git -C "$VAULT_ROOT" remote add origin "$REPO_URL" 2>/dev/null || git -C "$VAULT_ROOT" remote set-url origin "$REPO_URL" git -C "$VAULT_ROOT" fetch --depth 1 origin master git -C "$VAULT_ROOT" checkout -B master origin/master fi # 2) Construire le SDK client (TypeScript) if [ ! -d "$SDK_DIR" ]; then echo "[ERROR] Dossier sdk-client introuvable dans le dépôt $VAULT_ROOT" exit 2 fi cd "$SDK_DIR" # Tenter npm ci puis fallback npm install, puis compiler via tsc npm ci --no-audit --progress=false || npm install --no-audit --progress=false npx tsc || ./node_modules/.bin/tsc # 3) Démo: init/routes/sync locale (écrit sous vault/confs) node "$SDK_DIR/dist/examples/usage.js" || true # 4) Copier le miroir local vers confs si présent; sinon fallback sync directe via SDK local mkdir -p "$CONFS_DIR" if [ -d "$VAULT_ROOT/confs" ]; then echo "[copy] Synchronisation $VAULT_ROOT/confs -> $CONFS_DIR" rm -rf "$CONFS_DIR" mkdir -p "$CONFS_DIR" cp -a "$VAULT_ROOT/confs/." "$CONFS_DIR/" rm -rf "$VAULT_ROOT/confs" echo "[cleanup] Suppression du miroir $VAULT_ROOT/confs" else echo "[fallback] Miroir inexistant, tentative de sync directe via SDK" if [ -f "$SYNC_JS" ]; then node "$SYNC_JS" || true else echo "[WARN] Script de sync SDK introuvable: $SYNC_JS" fi fi echo "[OK] Sync Vault terminée vers $CONFS_DIR"