Files
CrazyClaude/install.sh

78 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Installe CrazyClaude dans le projet courant.
# À lancer depuis la racine du projet après git subtree add.
#
# Usage : bash .claude/install.sh
set -euo pipefail
CLAUDE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$CLAUDE_DIR")"
require() {
command -v "$1" &>/dev/null || { echo "ERREUR : '$1' introuvable dans le PATH" >&2; exit 1; }
}
require python3
require argc
require jq
require aichat
require claude
echo "=== Virtualenv Python ==="
python3 -m venv "$CLAUDE_DIR/venv"
"$CLAUDE_DIR/venv/bin/pip" install -q -r "$CLAUDE_DIR/mcp/qwen3-mcp/requirements.txt"
echo "OK"
echo ""
echo "=== Construction des outils llm-functions ==="
if [[ -f "$CLAUDE_DIR/llm-functions/Argcfile.sh" ]]; then
(cd "$CLAUDE_DIR/llm-functions" && argc build)
echo "OK"
else
echo "WARN : llm-functions non trouvé — lance d'abord :"
echo " git subtree add --prefix .claude/llm-functions https://github.com/sigoden/llm-functions.git main --squash"
fi
echo ""
echo "=== Mise à jour du .gitignore projet ==="
GITIGNORE="$PROJECT_DIR/.gitignore"
entries=(
".claude/venv/"
".claude/logs/"
".claude/llm-functions/bin/"
".claude/llm-functions/cache/"
)
for entry in "${entries[@]}"; do
if ! grep -qxF "$entry" "$GITIGNORE" 2>/dev/null; then
echo "$entry" >> "$GITIGNORE"
echo " ajouté : $entry"
fi
done
echo "OK"
echo ""
echo "=== Hooks exécutables ==="
chmod +x "$CLAUDE_DIR/hooks/"*.sh
echo "OK"
echo ""
echo "=== Enregistrement du serveur MCP ==="
PYTHON="$CLAUDE_DIR/venv/bin/python3"
SERVER="$CLAUDE_DIR/mcp/qwen3-mcp/server.py"
if claude mcp list 2>/dev/null | grep -q "^qwen3:"; then
echo "MCP qwen3 déjà enregistré — mise à jour"
claude mcp remove qwen3 2>/dev/null || true
fi
claude mcp add --transport stdio qwen3 -- "$PYTHON" "$SERVER"
echo "OK"
echo ""
echo "=== Vérification ==="
claude mcp list | grep qwen3
echo ""
echo "Installation terminée. Éditez .claude/CLAUDE.md pour adapter au projet."