install.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #!/bin/bash
  2. # AI Status Light - Hooks 安装脚本
  3. # 支持 OpenCode、Claude Code、Codex
  4. set -e
  5. SERVICE_URL="${STATUS_LIGHT_URL:-http://localhost:8045}"
  6. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  7. echo "=== AI Status Light Hooks 安装 ==="
  8. echo "服务地址: $SERVICE_URL"
  9. echo ""
  10. # OpenCode 插件
  11. install_opencode() {
  12. echo "安装 OpenCode 插件..."
  13. mkdir -p ~/.config/opencode/plugins
  14. cp "$SCRIPT_DIR/opencode-plugin/status-light.ts" ~/.config/opencode/plugins/
  15. # 更新配置
  16. mkdir -p ~/.config/opencode
  17. cat > ~/.config/opencode/status-light.json << EOF
  18. {
  19. "serviceUrl": "$SERVICE_URL"
  20. }
  21. EOF
  22. echo "✅ OpenCode 插件已安装"
  23. }
  24. # Claude Code hooks
  25. install_claude_code() {
  26. echo "安装 Claude Code hooks..."
  27. mkdir -p ~/.claude
  28. # 读取模板并替换 URL
  29. if [ -f ~/.claude/settings.json ]; then
  30. echo "⚠️ ~/.claude/settings.json 已存在,请手动合并 hooks 配置"
  31. echo "配置文件: $SCRIPT_DIR/hooks/claude-code/settings.json"
  32. else
  33. sed "s|http://localhost:8045|$SERVICE_URL|g" \
  34. "$SCRIPT_DIR/hooks/claude-code/settings.json" > ~/.claude/settings.json
  35. echo "✅ Claude Code hooks 已安装"
  36. fi
  37. }
  38. # Codex hooks
  39. install_codex() {
  40. echo "安装 Codex hooks..."
  41. mkdir -p ~/.codex
  42. # 读取模板并替换 URL
  43. if [ -f ~/.codex/hooks.json ]; then
  44. echo "⚠️ ~/.codex/hooks.json 已存在,请手动合并 hooks 配置"
  45. echo "配置文件: $SCRIPT_DIR/hooks/codex/hooks.json"
  46. else
  47. sed "s|http://localhost:8045|$SERVICE_URL|g" \
  48. "$SCRIPT_DIR/hooks/codex/hooks.json" > ~/.codex/hooks.json
  49. echo "✅ Codex hooks 已安装"
  50. fi
  51. }
  52. # 解析参数
  53. INSTALL_ALL=false
  54. INSTALL_OPENCODE=false
  55. INSTALL_CLAUDE=false
  56. INSTALL_CODEX=false
  57. if [ $# -eq 0 ]; then
  58. INSTALL_ALL=true
  59. fi
  60. for arg in "$@"; do
  61. case $arg in
  62. --all)
  63. INSTALL_ALL=true
  64. ;;
  65. --opencode)
  66. INSTALL_OPENCODE=true
  67. ;;
  68. --claude)
  69. INSTALL_CLAUDE=true
  70. ;;
  71. --codex)
  72. INSTALL_CODEX=true
  73. ;;
  74. --help|-h)
  75. echo "用法: $s0 [选项]"
  76. echo ""
  77. echo "选项:"
  78. echo " --all 安装所有 hooks (默认)"
  79. echo " --opencode 仅安装 OpenCode 插件"
  80. echo " --claude 仅安装 Claude Code hooks"
  81. echo " --codex 仅安装 Codex hooks"
  82. echo " --help 显示帮助"
  83. exit 0
  84. ;;
  85. *)
  86. echo "未知选项: $arg"
  87. exit 1
  88. ;;
  89. esac
  90. done
  91. if [ "$INSTALL_ALL" = true ]; then
  92. install_opencode
  93. install_claude_code
  94. install_codex
  95. else
  96. [ "$INSTALL_OPENCODE" = true ] && install_opencode
  97. [ "$INSTALL_CLAUDE" = true ] && install_claude_code
  98. [ "$INSTALL_CODEX" = true ] && install_codex
  99. fi
  100. echo ""
  101. echo "安装完成!请重启对应的 AI 工具以使 hooks 生效。"