Parcourir la source

feat: add tool-cbm-quiet.sh — codebase-memory-mcp 静默安装脚本(stderr 重定向)

b il y a 1 mois
Parent
commit
5668a80c35
1 fichiers modifiés avec 106 ajouts et 0 suppressions
  1. 106 0
      tool-cbm-quiet.sh

+ 106 - 0
tool-cbm-quiet.sh

@@ -0,0 +1,106 @@
+#!/bin/bash
+# ============================================================
+# codebase-memory-mcp 静默安装脚本
+# 功能:安装并配置 stderr 重定向,避免日志刷屏
+# 用法:curl -fsSL https://raw.githubusercontent.com/.../install.sh | bash
+#       然后执行本脚本
+# ============================================================
+
+set -e
+
+BIN_DIR="${HOME}/.local/bin"
+WRAPPER="${BIN_DIR}/cbm-mcp-wrapper"
+REAL_BIN="${BIN_DIR}/codebase-memory-mcp.real"
+DEFAULT_BIN="${BIN_DIR}/codebase-memory-mcp"
+LOG_FILE="/tmp/cbm-error.log"
+
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+NC='\033[0m'
+
+info()  { echo -e "${GREEN}[cbm]${NC} $1"; }
+warn()  { echo -e "${YELLOW}[cbm]${NC} $1"; }
+
+# ------------------------------------------
+# 1. 安装 codebase-memory-mcp(如未安装)
+# ------------------------------------------
+if [ ! -f "$DEFAULT_BIN" ] && [ ! -f "$REAL_BIN" ]; then
+  info "正在安装 codebase-memory-mcp..."
+  curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash
+  echo ""
+fi
+
+# ------------------------------------------
+# 2. 备份原始二进制
+# ------------------------------------------
+if [ -f "$DEFAULT_BIN" ] && [ ! -f "$REAL_BIN" ]; then
+  info "备份原始二进制 -> ${REAL_BIN}"
+  cp "$DEFAULT_BIN" "$REAL_BIN"
+fi
+
+# ------------------------------------------
+# 3. 创建独立 wrapper(不会被更新覆盖)
+# ------------------------------------------
+info "创建 stderr 重定向 wrapper -> ${WRAPPER}"
+cat > "$WRAPPER" << 'WRAPPER_EOF'
+#!/bin/bash
+# codebase-memory-mcp wrapper — redirect stderr to log file
+# This file is at a dedicated path and won't be overwritten by reinstall
+BIN_DIR="$(cd "$(dirname "$0")" && pwd)"
+exec -a "codebase-memory-mcp" "${BIN_DIR}/codebase-memory-mcp.real" 2>/tmp/cbm-error.log
+WRAPPER_EOF
+chmod +x "$WRAPPER"
+
+# ------------------------------------------
+# 4. 恢复原始二进制到默认路径(允许更新覆盖)
+# ------------------------------------------
+if [ -f "$REAL_BIN" ]; then
+  info "恢复原始二进制到默认路径"
+  cp "$REAL_BIN" "$DEFAULT_BIN"
+fi
+
+# ------------------------------------------
+# 5. 设置 CBM_MCP_BIN 环境变量
+# ------------------------------------------
+ENV_VAR='CBM_MCP_BIN='"${WRAPPER}"
+
+# 写入 /etc/environment(需 root)
+if [ "$(id -u)" = "0" ]; then
+  if ! grep -q "CBM_MCP_BIN" /etc/environment 2>/dev/null; then
+    info "写入 /etc/environment(系统级)"
+    echo "$ENV_VAR" >> /etc/environment
+  else
+    warn "/etc/environment 已存在 CBM_MCP_BIN,跳过"
+  fi
+else
+  warn "非 root 用户,跳过 /etc/environment"
+fi
+
+# 写入 ~/.bashrc(用户级,兜底)
+if ! grep -q "CBM_MCP_BIN" "${HOME}/.bashrc" 2>/dev/null; then
+  info "写入 ~/.bashrc"
+  echo "export ${ENV_VAR}" >> "${HOME}/.bashrc"
+else
+  warn "~/.bashrc 已存在 CBM_MCP_BIN,跳过"
+fi
+
+# ------------------------------------------
+# 6. 输出结果
+# ------------------------------------------
+echo ""
+echo "======================================"
+echo "  安装完成"
+echo "======================================"
+echo ""
+echo "  二进制:      ${DEFAULT_BIN}"
+echo "  原始备份:    ${REAL_BIN}"
+echo "  Wrapper:    ${WRAPPER}"
+echo "  日志文件:    ${LOG_FILE}"
+echo "  环境变量:    CBM_MCP_BIN=${WRAPPER}"
+echo ""
+echo "  使用方式:"
+echo "    1. 重启 pi 后自动生效"
+echo "    2. 或立即生效: export CBM_MCP_BIN=${WRAPPER}"
+echo "    3. 查看日志: tail -f ${LOG_FILE}"
+echo ""
+echo "======================================"