SPB Git forge
3commits 1branches 0releases
2.9 MBsize
maindefault branch
1 h agolast push
HTML 57.2% Shell 19.1% Python 11.2% CSS 7.4% JavaScript 5.1%
1.5 KB · 22 lines
Raw Blame History
1#!/bin/bash2# mld (laptop) — relaie la commande à la passerelle M1M32 puis rapatrie le registre.3#   mld plan | mld deploy <app> | mld move <app> --to X | mld status --live | mld stage <dir> <app> ...4# `mld stage <dir-local> <app>` : pousse un dossier du laptop dans le staging de la passerelle (~/dispatch/stage/<app>/dir/).5set -u6GW=M1M327SKILL_DIR="$(cd "$(dirname "$0")" && pwd)"8if [ "${1:-}" = "stage" ]; then9  echo "⚠️  REMOTE-FIRST : \`mld stage\` ne sert qu'à CRÉER une app (stage → deploy → adopt). Pour modifier une app existante, travailler dans le dépôt git SUR LE NŒUD (mld status → ssh <nœud>) — voir MACLUSTR-PROCEDURE.md." >&210  src="${2:?usage: mld stage <dir-local> <app>}"; app="${3:?usage: mld stage <dir-local> <app>}"11  # Un fichier .mldignore à la racine du projet ajoute des exclusions (syntaxe rsync) — p. ex. data/ avec des profils navigateur.12  extra=(); [ -f "${src%/}/.mldignore" ] && extra=(--exclude-from="${src%/}/.mldignore")13  rsync -az --delete --exclude .git --exclude node_modules --exclude .next --exclude .venv --exclude .DS_Store ${extra[@]+"${extra[@]}"} \14    --rsync-path="mkdir -p dispatch/stage/$app/dir && rsync" "${src%/}/" "$GW:dispatch/stage/$app/dir/" && echo "OK stage $app → $GW:~/dispatch/stage/$app/dir/${extra:+ (.mldignore appliqué)}"15  exit $?16fi17ssh -t -o LogLevel=ERROR "$GW" "~/maclustr-dispatch/bin/mld $(printf '%q ' "$@")"18rc=$?19# registre : copie locale (source de vérité = passerelle)20scp -q "$GW:dispatch/registry.json" "$SKILL_DIR/cluster-registry.json" 2>/dev/null21exit $rc22