MindOS_CLI/scripts/vendor_hermes.sh
lidf 69dd868e2f init: MindOS CLI 本地执行体(从 mindOSv2/mindos-cli 独立)
- 独立 pyproject.toml(pip install -e .)
- vendor_hermes.sh 已改为显式路径模式(不再依赖相对目录)
- 包含 hermes vendor 快照
2026-04-28 13:12:54 +08:00

71 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# scripts/vendor_hermes.sh
# 从本地 hermes 仓库打快照到 mindcli/_vendor/
#
# 用法: ./scripts/vendor_hermes.sh [hermes源码路径]
# 或: HERMES_SRC=/path/to/hermes ./scripts/vendor_hermes.sh
#
# 独立仓库,无默认路径——必须显式指定 hermes 源码位置。
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
HERMES_SRC="${1:-${HERMES_SRC:-}}"
if [ -z "$HERMES_SRC" ]; then
echo "❌ 请指定 hermes 源码路径:"
echo " $0 /path/to/hermes"
echo " 或设置环境变量: export HERMES_SRC=/path/to/hermes"
exit 1
fi
VENDOR_DIR="$PROJECT_DIR/mindcli/_vendor"
# 验证 hermes 源码存在
if [ ! -f "$HERMES_SRC/cli.py" ]; then
echo "❌ 找不到 hermes 源码: $HERMES_SRC/cli.py"
echo "用法: $0 [hermes源码路径]"
exit 1
fi
# 获取 commit hash
COMMIT="unknown"
if cd "$HERMES_SRC" && git rev-parse --short HEAD >/dev/null 2>&1; then
COMMIT=$(git rev-parse --short HEAD)
fi
echo "📦 Vendoring hermes@$COMMIT$VENDOR_DIR"
# 清理旧快照
rm -rf "$VENDOR_DIR"
mkdir -p "$VENDOR_DIR"
# 核心模块
cp "$HERMES_SRC/cli.py" "$VENDOR_DIR/"
cp "$HERMES_SRC/run_agent.py" "$VENDOR_DIR/"
cp "$HERMES_SRC/mcp_serve.py" "$VENDOR_DIR/"
cp "$HERMES_SRC/hermes_state.py" "$VENDOR_DIR/"
cp "$HERMES_SRC/hermes_constants.py" "$VENDOR_DIR/"
cp "$HERMES_SRC/batch_runner.py" "$VENDOR_DIR/" 2>/dev/null || true
# 子模块
cp -r "$HERMES_SRC/hermes_cli" "$VENDOR_DIR/"
cp -r "$HERMES_SRC/tools" "$VENDOR_DIR/"
cp -r "$HERMES_SRC/agent" "$VENDOR_DIR/"
# __init__.py
touch "$VENDOR_DIR/__init__.py"
# 版本锁定标记
echo "$COMMIT" > "$VENDOR_DIR/HERMES_COMMIT"
# 统计
FILE_COUNT=$(find "$VENDOR_DIR" -name "*.py" | wc -l | tr -d ' ')
LINE_COUNT=$(find "$VENDOR_DIR" -name "*.py" -exec cat {} + | wc -l | tr -d ' ')
echo "✅ Vendor 完成"
echo " Commit: $COMMIT"
echo " Files: $FILE_COUNT .py files"
echo " Lines: $LINE_COUNT lines"
echo " Path: $VENDOR_DIR"