feat: install.sh — détection dépendances et agents IA
This commit is contained in:
+68
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user