mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-04-06 21:41:42 +02:00
modif scripts
This commit is contained in:
@@ -22,6 +22,9 @@ alias mkproj='~/AI_RULES/_Assistant_Lead_Tech/scripts/mkproj.sh 2>/dev/null || /
|
||||
# Sync mémoire agents
|
||||
alias sync-ai='~/AI_RULES/_Assistant_Lead_Tech/scripts/sync-ai-instructions.sh 2>/dev/null || /srv/projects/_Assistant_Lead_Tech/scripts/sync-ai-instructions.sh'
|
||||
|
||||
# Initialiser la structure BMAD dans un projet existant
|
||||
alias bmad-init='"$LEADTECH/scripts/bmad-init-project.sh"'
|
||||
|
||||
# Post-install BMAD : injecte la capitalisation Lead_tech dans les agents du projet courant
|
||||
alias post-bmad-install='"$LEADTECH/scripts/post-bmad-install.sh"'
|
||||
|
||||
|
||||
127
scripts/bmad-init-project.sh
Executable file
127
scripts/bmad-init-project.sh
Executable file
@@ -0,0 +1,127 @@
|
||||
#!/usr/bin/env bash
|
||||
# bmad-init-project.sh
|
||||
# Initialise la structure BMAD d'un nouveau projet en symlinkant la carcasse centralisée.
|
||||
#
|
||||
# Usage : bmad-init (depuis la racine du projet)
|
||||
# Ou : ./bmad-init-project.sh <chemin-absolu-du-projet>
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
BMAD_BASE="/srv/projects/_Assistant_Lead_Tech/80_bmad/base"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# ─── Résolution du dossier projet ────────────────────────────────────────────
|
||||
|
||||
if [[ $# -ge 1 ]]; then
|
||||
PROJECT_ROOT="$1"
|
||||
else
|
||||
PROJECT_ROOT="$(pwd)"
|
||||
fi
|
||||
|
||||
if [[ ! -d "$PROJECT_ROOT" ]]; then
|
||||
echo "Erreur : le dossier '$PROJECT_ROOT' n'existe pas."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "$BMAD_BASE" ]]; then
|
||||
echo "Erreur : BMAD base introuvable à '$BMAD_BASE'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PROJECT_NAME="$(basename "$PROJECT_ROOT")"
|
||||
|
||||
echo "→ Initialisation BMAD pour : $PROJECT_ROOT"
|
||||
|
||||
# ─── CLAUDE.md + AGENTS.md ───────────────────────────────────────────────────
|
||||
|
||||
"$SCRIPT_DIR/generate_project_claude.sh" "$PROJECT_NAME" "$PROJECT_ROOT"
|
||||
|
||||
# ─── Modules à symlinkter dans _bmad/ ────────────────────────────────────────
|
||||
|
||||
BMAD_MODULES=(core bmm cis tea _config)
|
||||
|
||||
mkdir -p "$PROJECT_ROOT/_bmad"
|
||||
|
||||
for module in "${BMAD_MODULES[@]}"; do
|
||||
TARGET="$PROJECT_ROOT/_bmad/$module"
|
||||
SOURCE="$BMAD_BASE/_bmad/$module"
|
||||
|
||||
if [[ ! -d "$SOURCE" ]]; then
|
||||
echo " ⚠ Module '$module' absent de la base, ignoré."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -L "$TARGET" ]]; then
|
||||
echo " ~ symlink déjà présent : _bmad/$module"
|
||||
elif [[ -e "$TARGET" ]]; then
|
||||
echo " ⚠ '$TARGET' existe déjà (pas un symlink), ignoré."
|
||||
else
|
||||
ln -s "$SOURCE" "$TARGET"
|
||||
echo " ✓ symlink créé : _bmad/$module → $SOURCE"
|
||||
fi
|
||||
done
|
||||
|
||||
# ─── _memory : copie locale (écrite par les agents) ──────────────────────────
|
||||
|
||||
MEMORY_TARGET="$PROJECT_ROOT/_bmad/_memory"
|
||||
MEMORY_SOURCE="$BMAD_BASE/_bmad/_memory"
|
||||
|
||||
if [[ -L "$MEMORY_TARGET" ]]; then
|
||||
echo " ⚠ _bmad/_memory est un symlink — conversion en copie locale..."
|
||||
rm "$MEMORY_TARGET"
|
||||
cp -r "$MEMORY_SOURCE" "$MEMORY_TARGET"
|
||||
echo " ✓ _memory copié localement"
|
||||
elif [[ -d "$MEMORY_TARGET" ]]; then
|
||||
echo " ~ _bmad/_memory existe déjà, non écrasé."
|
||||
else
|
||||
cp -r "$MEMORY_SOURCE" "$MEMORY_TARGET"
|
||||
echo " ✓ _memory initialisé depuis la base"
|
||||
fi
|
||||
|
||||
# ─── .agents/ et .claude/ : symlinks à la racine du projet ──────────────────
|
||||
|
||||
for dir in .agents .claude; do
|
||||
TARGET="$PROJECT_ROOT/$dir"
|
||||
SOURCE="$BMAD_BASE/$dir"
|
||||
|
||||
if [[ ! -d "$SOURCE" ]]; then
|
||||
echo " ⚠ '$dir' absent de la base, ignoré."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -L "$TARGET" ]]; then
|
||||
echo " ~ symlink déjà présent : $dir"
|
||||
elif [[ -d "$TARGET" ]]; then
|
||||
echo " ⚠ '$dir' existe déjà (dossier réel), ignoré. Merge manuel requis."
|
||||
else
|
||||
ln -s "$SOURCE" "$TARGET"
|
||||
echo " ✓ symlink créé : $dir → $SOURCE"
|
||||
fi
|
||||
done
|
||||
|
||||
# ─── _bmad-output/ : dossier local vide ─────────────────────────────────────
|
||||
|
||||
OUTPUT_DIR="$PROJECT_ROOT/_bmad-output"
|
||||
if [[ ! -d "$OUTPUT_DIR" ]]; then
|
||||
mkdir -p "$OUTPUT_DIR"/{brainstorming,planning-artifacts,implementation-artifacts,test-artifacts}
|
||||
echo " ✓ _bmad-output/ créé"
|
||||
else
|
||||
echo " ~ _bmad-output/ existe déjà"
|
||||
fi
|
||||
|
||||
# ─── Résumé ──────────────────────────────────────────────────────────────────
|
||||
|
||||
echo ""
|
||||
echo "Structure BMAD initialisée :"
|
||||
echo ""
|
||||
echo " $PROJECT_ROOT/"
|
||||
echo " ├── _bmad/"
|
||||
for module in "${BMAD_MODULES[@]}"; do
|
||||
echo " │ ├── $module → symlink (centralisé)"
|
||||
done
|
||||
echo " │ └── _memory/ (local)"
|
||||
echo " ├── .agents/ → symlink (centralisé)"
|
||||
echo " ├── .claude/ → symlink (centralisé)"
|
||||
echo " └── _bmad-output/ (local)"
|
||||
echo ""
|
||||
echo "✓ Prêt."
|
||||
@@ -26,7 +26,7 @@ else
|
||||
fi
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
TEMPLATE="$SCRIPT_DIR/70_templates/projet_CLAUDE.md"
|
||||
TEMPLATE="$SCRIPT_DIR/../70_templates/projet_CLAUDE.md"
|
||||
|
||||
OUTPUT="$PROJECT_PATH/CLAUDE.md"
|
||||
|
||||
|
||||
@@ -138,6 +138,7 @@ EOF
|
||||
}
|
||||
|
||||
create_gitignore() {
|
||||
local with_bmad="${1:-false}"
|
||||
cat <<'EOF' > "$PROJECT_PATH/.gitignore"
|
||||
# dependencies
|
||||
node_modules/
|
||||
@@ -171,18 +172,41 @@ out/
|
||||
.tmp/
|
||||
tmp/
|
||||
|
||||
# AI tools
|
||||
.claude/
|
||||
.codex/
|
||||
|
||||
# Agent compatibility file (symlink to CLAUDE.md)
|
||||
AGENTS.md
|
||||
EOF
|
||||
|
||||
if [ "$with_bmad" = "false" ]; then
|
||||
cat <<'EOF' >> "$PROJECT_PATH/.gitignore"
|
||||
|
||||
# AI tools
|
||||
.claude/
|
||||
.codex/
|
||||
EOF
|
||||
else
|
||||
cat <<'EOF' >> "$PROJECT_PATH/.gitignore"
|
||||
|
||||
# AI tools (BMAD : .claude et .agents sont des symlinks centralisés, non versionnés)
|
||||
.claude
|
||||
.agents
|
||||
.codex/
|
||||
|
||||
# BMAD artefacts locaux (versionnés séparément si besoin)
|
||||
_bmad-output/
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
choose_target_base
|
||||
prompt_project_metadata
|
||||
|
||||
printf "Initialiser BMAD ? [o/N] : "
|
||||
read -r bmad_choice
|
||||
USE_BMAD="false"
|
||||
if [[ "$bmad_choice" =~ ^[oO]$ ]]; then
|
||||
USE_BMAD="true"
|
||||
fi
|
||||
|
||||
if [ ! -d "$TARGET_BASE" ]; then
|
||||
echo "Le dossier cible n'existe pas : $TARGET_BASE"
|
||||
exit 1
|
||||
@@ -200,11 +224,14 @@ cd "$PROJECT_PATH"
|
||||
|
||||
git init
|
||||
|
||||
# mémoire agents
|
||||
gen-claude "$PROJECT_NAME"
|
||||
|
||||
create_readme
|
||||
create_gitignore
|
||||
create_gitignore "$USE_BMAD"
|
||||
|
||||
if [ "$USE_BMAD" = "true" ]; then
|
||||
"$SCRIPT_DIR/bmad-init-project.sh" "$PROJECT_PATH"
|
||||
else
|
||||
gen-claude "$PROJECT_NAME"
|
||||
fi
|
||||
|
||||
register_project_in_conf
|
||||
|
||||
|
||||
Reference in New Issue
Block a user