|
@@ -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 "======================================"
|