| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #!/bin/bash
- # AI Status Light - Hooks 安装脚本
- # 支持 OpenCode、Claude Code、Codex
- set -e
- SERVICE_URL="${STATUS_LIGHT_URL:-http://localhost:8045}"
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
- echo "=== AI Status Light Hooks 安装 ==="
- echo "服务地址: $SERVICE_URL"
- echo ""
- # OpenCode 插件
- install_opencode() {
- echo "安装 OpenCode 插件..."
- mkdir -p ~/.config/opencode/plugins
- cp "$SCRIPT_DIR/opencode-plugin/status-light.ts" ~/.config/opencode/plugins/
-
- # 更新配置
- mkdir -p ~/.config/opencode
- cat > ~/.config/opencode/status-light.json << EOF
- {
- "serviceUrl": "$SERVICE_URL"
- }
- EOF
- echo "✅ OpenCode 插件已安装"
- }
- # Claude Code hooks
- install_claude_code() {
- echo "安装 Claude Code hooks..."
- mkdir -p ~/.claude
-
- # 读取模板并替换 URL
- if [ -f ~/.claude/settings.json ]; then
- echo "⚠️ ~/.claude/settings.json 已存在,请手动合并 hooks 配置"
- echo "配置文件: $SCRIPT_DIR/hooks/claude-code/settings.json"
- else
- sed "s|http://localhost:8045|$SERVICE_URL|g" \
- "$SCRIPT_DIR/hooks/claude-code/settings.json" > ~/.claude/settings.json
- echo "✅ Claude Code hooks 已安装"
- fi
- }
- # Codex hooks
- install_codex() {
- echo "安装 Codex hooks..."
- mkdir -p ~/.codex
-
- # 读取模板并替换 URL
- if [ -f ~/.codex/hooks.json ]; then
- echo "⚠️ ~/.codex/hooks.json 已存在,请手动合并 hooks 配置"
- echo "配置文件: $SCRIPT_DIR/hooks/codex/hooks.json"
- else
- sed "s|http://localhost:8045|$SERVICE_URL|g" \
- "$SCRIPT_DIR/hooks/codex/hooks.json" > ~/.codex/hooks.json
- echo "✅ Codex hooks 已安装"
- fi
- }
- # 解析参数
- INSTALL_ALL=false
- INSTALL_OPENCODE=false
- INSTALL_CLAUDE=false
- INSTALL_CODEX=false
- if [ $# -eq 0 ]; then
- INSTALL_ALL=true
- fi
- for arg in "$@"; do
- case $arg in
- --all)
- INSTALL_ALL=true
- ;;
- --opencode)
- INSTALL_OPENCODE=true
- ;;
- --claude)
- INSTALL_CLAUDE=true
- ;;
- --codex)
- INSTALL_CODEX=true
- ;;
- --help|-h)
- echo "用法: $s0 [选项]"
- echo ""
- echo "选项:"
- echo " --all 安装所有 hooks (默认)"
- echo " --opencode 仅安装 OpenCode 插件"
- echo " --claude 仅安装 Claude Code hooks"
- echo " --codex 仅安装 Codex hooks"
- echo " --help 显示帮助"
- exit 0
- ;;
- *)
- echo "未知选项: $arg"
- exit 1
- ;;
- esac
- done
- if [ "$INSTALL_ALL" = true ]; then
- install_opencode
- install_claude_code
- install_codex
- else
- [ "$INSTALL_OPENCODE" = true ] && install_opencode
- [ "$INSTALL_CLAUDE" = true ] && install_claude_code
- [ "$INSTALL_CODEX" = true ] && install_codex
- fi
- echo ""
- echo "安装完成!请重启对应的 AI 工具以使 hooks 生效。"
|