diff --git a/install.sh b/install.sh index bfd445b..1e5551f 100755 --- a/install.sh +++ b/install.sh @@ -59,3 +59,71 @@ cleanup() { [[ -f "$STATE_FILE" ]] && rm -f "$STATE_FILE" } trap cleanup EXIT + +# ── Installation fzf ────────────────────────────────────────────── +_install_fzf_binary() { + local fzf_url="https://github.com/junegunn/fzf/releases/latest/download/fzf-linux_amd64.tar.gz" + local tmp_fzf="/tmp/fzf_$$.tar.gz" + info "Téléchargement fzf depuis GitHub Releases..." + curl -fsSL "$fzf_url" -o "$tmp_fzf" + mkdir -p "$HOME/.local/bin" + tar -xzf "$tmp_fzf" -C "$HOME/.local/bin/" fzf + rm -f "$tmp_fzf" + export PATH="$HOME/.local/bin:$PATH" +} + +install_fzf() { + warn "fzf non trouvé." + echo -e " ${GRV_FG}Installer fzf ? [o/N]${RESET} \c" + read -r answer + [[ "$answer" != "o" && "$answer" != "O" ]] && err "fzf requis. Abandon." && exit 1 + if command -v apt-get &>/dev/null; then + debug "Installation via apt" + apt-get install -y fzf 2>/dev/null || _install_fzf_binary + else + _install_fzf_binary + fi + command -v fzf &>/dev/null && ok "fzf installé." || { err "Impossible d'installer fzf."; exit 1; } +} + +# ── Vérification des dépendances ────────────────────────────────── +check_deps() { + header "Vérification des dépendances" + command -v git &>/dev/null || { err "git non trouvé. Installer git et relancer."; exit 1; } + ok "git $(git --version | awk '{print $3}')" + command -v fzf &>/dev/null || install_fzf + ok "fzf $(fzf --version | awk '{print $1}')" +} + +# ── Détection des agents IA ─────────────────────────────────────── +DETECTED_AGENTS=() + +detect_agents() { + header "Détection des agents IA" + + _check_agent() { + local name="$1" primary="$2" secondary="$3" + if [[ -n "$SKILLS_AGENT" && "$SKILLS_AGENT" != "$name" ]]; then + debug "Agent $name ignoré (SKILLS_AGENT=$SKILLS_AGENT)" + return + fi + if eval "$primary" &>/dev/null 2>&1 || eval "$secondary" &>/dev/null 2>&1; then + DETECTED_AGENTS+=("$name") + ok "Agent détecté : $name" + else + echo -e "${GRV_GRAY}${ICO_NA} Agent absent : $name${RESET}" + fi + } + + local npm_prefix + npm_prefix=$(npm config get prefix 2>/dev/null || echo "") + + _check_agent "claude-code" "test -d $HOME/.claude" "command -v claude" + _check_agent "gemini-cli" "command -v gemini" "test -f ${npm_prefix}/bin/gemini" + _check_agent "codex" "command -v codex" "test -f $HOME/.npm-global/bin/codex" + _check_agent "hermes" "command -v hermes" "test -f $HOME/.local/bin/hermes" + + if [[ ${#DETECTED_AGENTS[@]} -eq 0 ]]; then + warn "Aucun agent IA détecté. L'installation continuera mais aucun skill ne sera filtré." + fi +}