mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-04-06 21:41:42 +02:00
76 lines
2.1 KiB
Bash
Executable File
76 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# sync-ai-instructions.sh
|
|
# Génère CLAUDE.md et AGENTS.md depuis _AI_INSTRUCTIONS.md + _projects.conf
|
|
# selon la machine courante (Darwin = Mac, Linux = NUC)
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SOURCE="$SCRIPT_DIR/_AI_INSTRUCTIONS.md"
|
|
PROJECTS_CONF="$SCRIPT_DIR/_projects.conf"
|
|
|
|
# --- Détection machine ---
|
|
OS="$(uname -s)"
|
|
|
|
# --- Construire la table markdown des projets ---
|
|
build_projects_table() {
|
|
local os="$1"
|
|
echo "| Projet | Stack | Localisation | État |"
|
|
echo "|---|---|---|---|"
|
|
while IFS='|' read -r nom stack path_nuc path_mac etat; do
|
|
# Ignorer lignes vides et commentaires
|
|
[[ -z "$nom" || "$nom" == \#* ]] && continue
|
|
if [ "$os" = "Darwin" ]; then
|
|
path="$path_mac"
|
|
else
|
|
path="$path_nuc"
|
|
fi
|
|
if [ -z "$path" ]; then
|
|
echo "| $nom | $stack | *non disponible sur cette machine* | $etat |"
|
|
else
|
|
echo "| $nom | $stack | \`$path\` | $etat |"
|
|
fi
|
|
done < "$PROJECTS_CONF"
|
|
}
|
|
|
|
# --- Fonction de génération ---
|
|
generate() {
|
|
local header="$1"
|
|
local dest="$2"
|
|
local projects_table
|
|
projects_table="$(build_projects_table "$OS")"
|
|
|
|
{
|
|
echo "$header"
|
|
echo ""
|
|
# Remplacer {{PROJECTS_TABLE}} par la table générée
|
|
while IFS= read -r line; do
|
|
if [ "$line" = "{{PROJECTS_TABLE}}" ]; then
|
|
echo "$projects_table"
|
|
else
|
|
echo "$line"
|
|
fi
|
|
done < "$SOURCE"
|
|
} > "$dest"
|
|
echo " -> $dest"
|
|
}
|
|
|
|
echo "Sync AI instructions (OS: $OS)"
|
|
|
|
CLAUDE_HEADER="# Instructions globales — Lead Tech Copilote
|
|
|
|
Ce fichier est chargé automatiquement par Claude Code à chaque session.
|
|
Il pointe vers la base de connaissance commune à tous les projets."
|
|
|
|
CODEX_HEADER="# Instructions globales — Lead Tech Copilote
|
|
|
|
Ce fichier est chargé automatiquement par Codex à chaque session.
|
|
Il pointe vers la base de connaissance commune à tous les projets."
|
|
|
|
generate "$CLAUDE_HEADER" "$HOME/.claude/CLAUDE.md"
|
|
generate "$CLAUDE_HEADER" "$SCRIPT_DIR/CLAUDE.md"
|
|
generate "$CODEX_HEADER" "$HOME/.codex/AGENTS.md"
|
|
generate "$CODEX_HEADER" "$SCRIPT_DIR/AGENTS.md"
|
|
|
|
echo "Sync terminé."
|