mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-04-06 21:41:42 +02:00
148 lines
2.3 KiB
Bash
Executable File
148 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
PROJECT_NAME="${1:-}"
|
|
OS="$(uname -s)"
|
|
TARGET_BASE=""
|
|
PROJECT_PATH=""
|
|
|
|
if [ -z "$PROJECT_NAME" ]; then
|
|
echo "Usage: mkproj <nom_du_projet>"
|
|
exit 1
|
|
fi
|
|
|
|
choose_mac_target_base() {
|
|
echo "Environnement détecté : Mac"
|
|
echo "Choisir le type de projet :"
|
|
echo " 1) Projet perso -> /Volumes/TeraSSD/Projets_Dev"
|
|
echo " 2) Projet Mindleaf -> /Volumes/TeraSSD/Projets_Dev/__Mindleaf"
|
|
printf "Votre choix [1/2] : "
|
|
read -r choice
|
|
|
|
case "$choice" in
|
|
1)
|
|
TARGET_BASE="/Volumes/TeraSSD/Projets_Dev"
|
|
;;
|
|
2)
|
|
TARGET_BASE="/Volumes/TeraSSD/Projets_Dev/__Mindleaf"
|
|
;;
|
|
*)
|
|
echo "Choix invalide."
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
choose_target_base() {
|
|
case "$OS" in
|
|
Linux)
|
|
echo "Environnement détecté : NUC/Linux"
|
|
TARGET_BASE="/srv/projects"
|
|
;;
|
|
Darwin)
|
|
choose_mac_target_base
|
|
;;
|
|
*)
|
|
echo "Système non supporté : $OS"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
create_readme() {
|
|
cat <<EOF > "$PROJECT_PATH/README.md"
|
|
# $PROJECT_NAME
|
|
|
|
Projet initialisé avec l'environnement Lead_tech.
|
|
|
|
## Structure attendue
|
|
|
|
- \`CLAUDE.md\` : mémoire active du projet
|
|
- \`AGENTS.md\` : symlink vers \`CLAUDE.md\`
|
|
- \`README.md\` : documentation projet
|
|
- \`.gitignore\` : exclusions Git de base
|
|
|
|
## Commandes utiles
|
|
|
|
\`\`\`bash
|
|
# Initialiser la mémoire projet
|
|
gen-claude
|
|
|
|
# Démarrer la stack Docker
|
|
docker compose up -d
|
|
\`\`\`
|
|
EOF
|
|
}
|
|
|
|
create_gitignore() {
|
|
cat <<'EOF' > "$PROJECT_PATH/.gitignore"
|
|
# dependencies
|
|
node_modules/
|
|
|
|
# logs
|
|
logs/
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
pnpm-debug.log*
|
|
|
|
# env
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
|
|
# build outputs
|
|
dist/
|
|
build/
|
|
coverage/
|
|
.next/
|
|
out/
|
|
|
|
# editors / OS
|
|
.DS_Store
|
|
.vscode/
|
|
.idea/
|
|
|
|
# local runtime data
|
|
.tmp/
|
|
tmp/
|
|
|
|
# AI tools
|
|
.claude/
|
|
.codex/
|
|
EOF
|
|
}
|
|
|
|
choose_target_base
|
|
|
|
if [ ! -d "$TARGET_BASE" ]; then
|
|
echo "Le dossier cible n'existe pas : $TARGET_BASE"
|
|
exit 1
|
|
fi
|
|
|
|
PROJECT_PATH="$TARGET_BASE/$PROJECT_NAME"
|
|
|
|
if [ -e "$PROJECT_PATH" ]; then
|
|
echo "Le dossier existe déjà : $PROJECT_PATH"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$PROJECT_PATH"
|
|
cd "$PROJECT_PATH"
|
|
|
|
git init
|
|
|
|
# mémoire agents
|
|
gen-claude "$PROJECT_NAME"
|
|
|
|
create_readme
|
|
create_gitignore
|
|
|
|
echo ""
|
|
echo "Projet créé : $PROJECT_PATH"
|
|
echo ""
|
|
echo "Prochaines étapes :"
|
|
echo " cd $PROJECT_PATH"
|
|
echo " git remote add origin <repo>"
|
|
echo " docker compose up -d" |