chore: initialize qiming workspace repository
This commit is contained in:
149
qimingclaw/scripts/check-sidecars.sh
Normal file
149
qimingclaw/scripts/check-sidecars.sh
Normal file
@@ -0,0 +1,149 @@
|
||||
#!/bin/bash
|
||||
# 检查 sidecar 二进制是否齐全
|
||||
#
|
||||
# 用法:
|
||||
# ./scripts/check-sidecars.sh
|
||||
# ./scripts/check-sidecars.sh --target x86_64-pc-windows-msvc
|
||||
# ./scripts/check-sidecars.sh --all-common
|
||||
# ./scripts/check-sidecars.sh --component mcp-proxy --component node-runtime
|
||||
# ./scripts/check-sidecars.sh --downloaded-only
|
||||
# ./scripts/check-sidecars.sh --dir .cache/sidecars --downloaded-only --all-common
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
CHECK_DIR="${CHECK_DIR:-.cache/sidecars}"
|
||||
|
||||
TARGET=""
|
||||
TARGETS=()
|
||||
COMPONENTS=()
|
||||
DOWNLOADED_ONLY=0
|
||||
ALL_COMMON=0
|
||||
|
||||
COMMON_TARGETS=(
|
||||
"x86_64-pc-windows-msvc"
|
||||
"aarch64-pc-windows-msvc"
|
||||
"x86_64-apple-darwin"
|
||||
"aarch64-apple-darwin"
|
||||
"x86_64-unknown-linux-gnu"
|
||||
"aarch64-unknown-linux-gnu"
|
||||
)
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--target)
|
||||
TARGETS+=("${2:-}")
|
||||
shift 2
|
||||
;;
|
||||
--all-common)
|
||||
ALL_COMMON=1
|
||||
shift 1
|
||||
;;
|
||||
--component)
|
||||
COMPONENTS+=("${2:-}")
|
||||
shift 2
|
||||
;;
|
||||
--downloaded-only)
|
||||
DOWNLOADED_ONLY=1
|
||||
shift 1
|
||||
;;
|
||||
--dir)
|
||||
CHECK_DIR="${2:-}"
|
||||
shift 2
|
||||
;;
|
||||
-h|--help)
|
||||
sed -n '1,12p' "$0"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "未知参数: $1" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ $ALL_COMMON -eq 1 ]]; then
|
||||
TARGETS=("${COMMON_TARGETS[@]}")
|
||||
fi
|
||||
|
||||
if [[ ${#TARGETS[@]} -eq 0 ]]; then
|
||||
# Default to current platform
|
||||
case "$(uname -s)" in
|
||||
Darwin)
|
||||
case "$(uname -m)" in
|
||||
arm64) TARGETS=("aarch64-apple-darwin") ;;
|
||||
*) TARGETS=("x86_64-apple-darwin") ;;
|
||||
esac
|
||||
;;
|
||||
Linux)
|
||||
case "$(uname -m)" in
|
||||
aarch64) TARGETS=("aarch64-unknown-linux-gnu") ;;
|
||||
armv7l) TARGETS=("aarch64-unknown-linux-gnu") ;;
|
||||
*) TARGETS=("x86_64-unknown-linux-gnu") ;;
|
||||
esac
|
||||
;;
|
||||
MINGW*|MSYS*|CYGWIN*)
|
||||
TARGETS=("x86_64-pc-windows-msvc")
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ ${#COMPONENTS[@]} -eq 0 && $DOWNLOADED_ONLY -eq 1 ]]; then
|
||||
COMPONENTS=("mcp-proxy" "node-runtime")
|
||||
fi
|
||||
|
||||
if [[ ${#COMPONENTS[@]} -eq 0 ]]; then
|
||||
COMPONENTS=("qiming-lanproxy" "mcp-proxy" "node-runtime")
|
||||
fi
|
||||
|
||||
if [[ ! -d "$CHECK_DIR" ]]; then
|
||||
echo "目录不存在: $CHECK_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
expected_filename() {
|
||||
local component="$1"
|
||||
local target="$2"
|
||||
local ext=""
|
||||
if [[ "$target" == *windows* ]]; then
|
||||
ext=".exe"
|
||||
fi
|
||||
echo "${component}-${target}${ext}"
|
||||
}
|
||||
|
||||
total_missing=0
|
||||
for TARGET in "${TARGETS[@]}"; do
|
||||
echo "检查目标: $TARGET"
|
||||
echo "检查目录: $CHECK_DIR"
|
||||
echo "组件: ${COMPONENTS[*]}"
|
||||
echo ""
|
||||
|
||||
missing=0
|
||||
for component in "${COMPONENTS[@]}"; do
|
||||
fname="$(expected_filename "$component" "$TARGET")"
|
||||
fpath="$CHECK_DIR/$fname"
|
||||
if [[ -f "$fpath" ]]; then
|
||||
echo "OK $fname"
|
||||
else
|
||||
echo "MISS $fname"
|
||||
missing=$((missing + 1))
|
||||
total_missing=$((total_missing + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
if [[ $missing -gt 0 ]]; then
|
||||
echo "目标 $TARGET 缺失 sidecar 文件数量: $missing"
|
||||
else
|
||||
echo "目标 $TARGET sidecar 文件检查通过"
|
||||
fi
|
||||
echo ""
|
||||
done
|
||||
|
||||
if [[ $total_missing -gt 0 ]]; then
|
||||
echo "总缺失 sidecar 文件数量: $total_missing"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "所有目标 sidecar 文件检查通过"
|
||||
Reference in New Issue
Block a user