tool-cbm-quiet.sh 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/bin/bash
  2. # ============================================================
  3. # codebase-memory-mcp 静默安装脚本
  4. # 功能:安装并配置 stderr 重定向,避免日志刷屏
  5. # 用法:curl -fsSL https://raw.githubusercontent.com/.../install.sh | bash
  6. # 然后执行本脚本
  7. # ============================================================
  8. set -e
  9. BIN_DIR="${HOME}/.local/bin"
  10. WRAPPER="${BIN_DIR}/cbm-mcp-wrapper"
  11. REAL_BIN="${BIN_DIR}/codebase-memory-mcp.real"
  12. DEFAULT_BIN="${BIN_DIR}/codebase-memory-mcp"
  13. LOG_FILE="/tmp/cbm-error.log"
  14. GREEN='\033[0;32m'
  15. YELLOW='\033[1;33m'
  16. NC='\033[0m'
  17. info() { echo -e "${GREEN}[cbm]${NC} $1"; }
  18. warn() { echo -e "${YELLOW}[cbm]${NC} $1"; }
  19. # ------------------------------------------
  20. # 1. 安装 codebase-memory-mcp(如未安装)
  21. # ------------------------------------------
  22. if [ ! -f "$DEFAULT_BIN" ] && [ ! -f "$REAL_BIN" ]; then
  23. info "正在安装 codebase-memory-mcp..."
  24. curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash
  25. echo ""
  26. fi
  27. # ------------------------------------------
  28. # 2. 备份原始二进制
  29. # ------------------------------------------
  30. if [ -f "$DEFAULT_BIN" ] && [ ! -f "$REAL_BIN" ]; then
  31. info "备份原始二进制 -> ${REAL_BIN}"
  32. cp "$DEFAULT_BIN" "$REAL_BIN"
  33. fi
  34. # ------------------------------------------
  35. # 3. 创建独立 wrapper(不会被更新覆盖)
  36. # ------------------------------------------
  37. info "创建 stderr 重定向 wrapper -> ${WRAPPER}"
  38. cat >"$WRAPPER" <<'WRAPPER_EOF'
  39. #!/bin/bash
  40. # codebase-memory-mcp wrapper — redirect stderr to log file
  41. # This file is at a dedicated path and won't be overwritten by reinstall
  42. BIN_DIR="$(cd "$(dirname "$0")" && pwd)"
  43. exec -a "codebase-memory-mcp" "${BIN_DIR}/codebase-memory-mcp.real" 2>/tmp/cbm-error.log
  44. WRAPPER_EOF
  45. chmod +x "$WRAPPER"
  46. # ------------------------------------------
  47. # 4. 恢复原始二进制到默认路径(允许更新覆盖)
  48. # ------------------------------------------
  49. if [ -f "$REAL_BIN" ]; then
  50. info "恢复原始二进制到默认路径"
  51. cp "$REAL_BIN" "$DEFAULT_BIN"
  52. fi
  53. # ------------------------------------------
  54. # 5. 设置 CBM_MCP_BIN 环境变量
  55. # ------------------------------------------
  56. ENV_VAR='CBM_MCP_BIN='"${WRAPPER}"
  57. # 写入 /etc/environment(需 root)
  58. if [ "$(id -u)" = "0" ]; then
  59. if ! grep -q "CBM_MCP_BIN" /etc/environment 2>/dev/null; then
  60. info "写入 /etc/environment(系统级)"
  61. echo "$ENV_VAR" >>/etc/environment
  62. else
  63. warn "/etc/environment 已存在 CBM_MCP_BIN,跳过"
  64. fi
  65. else
  66. warn "非 root 用户,跳过 /etc/environment"
  67. fi
  68. # 写入 ~/.bashrc(用户级,兜底)
  69. if ! grep -q "CBM_MCP_BIN" "${HOME}/.bashrc" 2>/dev/null; then
  70. info "写入 ~/.bashrc"
  71. echo "export ${ENV_VAR}" >>"${HOME}/.bashrc"
  72. else
  73. warn "~/.bashrc 已存在 CBM_MCP_BIN,跳过"
  74. fi
  75. # ------------------------------------------
  76. # 6. 输出结果
  77. # ------------------------------------------
  78. echo ""
  79. echo "======================================"
  80. echo " 安装完成"
  81. echo "======================================"
  82. echo ""
  83. echo " 二进制: ${DEFAULT_BIN}"
  84. echo " 原始备份: ${REAL_BIN}"
  85. echo " Wrapper: ${WRAPPER}"
  86. echo " 日志文件: ${LOG_FILE}"
  87. echo " 环境变量: CBM_MCP_BIN=${WRAPPER}"
  88. echo ""
  89. echo " 使用方式:"
  90. echo " 1. 重启 pi 后自动生效"
  91. echo " 2. 或立即生效: export CBM_MCP_BIN=${WRAPPER}"
  92. echo " 3. 查看日志: tail -f ${LOG_FILE}"
  93. echo ""
  94. echo "======================================"