64 lines
3.6 KiB
Bash
Executable File
64 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||
cd "$ROOT_DIR"
|
||
|
||
pass() { echo "[PASS] $1"; }
|
||
fail() { echo "[FAIL] $1"; exit 1; }
|
||
|
||
# 1) Shell 语法检查
|
||
bash -n install.sh || fail "install.sh syntax"
|
||
bash -n config-menu.sh || fail "config-menu.sh syntax"
|
||
bash -n docker-entrypoint.sh || fail "docker-entrypoint.sh syntax"
|
||
pass "shell syntax"
|
||
|
||
# 2) 官方升级链路关键字检查
|
||
grep -q "openclaw update --restart" config-menu.sh || fail "missing openclaw update --restart in config-menu.sh"
|
||
grep -q "openclaw plugins update --all" config-menu.sh || fail "missing plugins update --all in config-menu.sh"
|
||
pass "upgrade pipeline markers"
|
||
|
||
# 3) 飞书官方插件默认检查
|
||
grep -q 'FEISHU_PLUGIN_OFFICIAL="@openclaw/feishu"' config-menu.sh || fail "missing official feishu plugin default"
|
||
grep -q "channels.feishu.accounts.main.appId" config-menu.sh || fail "missing feishu accounts.main.appId config path"
|
||
grep -q 'openclaw plugins install "$preferred_spec" --pin' config-menu.sh || fail "missing pinned official feishu install"
|
||
pass "feishu plugin default marker"
|
||
|
||
# 4) 安装器官方兼容关键点
|
||
grep -q -- "--install-method, --method" install.sh || fail "install.sh missing official install-method flag"
|
||
grep -q "OFFICIAL_INSTALL_URL=\"https://openclaw.ai/install.sh\"" install.sh || fail "install.sh missing official installer url"
|
||
grep -q "MIN_NODE_MINOR=12" install.sh || fail "install.sh missing Node 22.12+ floor"
|
||
grep -q "INSTALLER_MIRROR_RAW_URL=" install.sh || fail "install.sh missing installer mirror support"
|
||
pass "installer compatibility markers"
|
||
|
||
# 5) 文档命令一致性检查
|
||
grep -q "openclaw update --restart" README.md || fail "README missing official upgrade command"
|
||
grep -q "openclaw plugins update --all" README.md || fail "README missing plugin update command"
|
||
grep -q "raw.githubusercontent.com/leecyno1/auto-install-Openclaw/main/install.sh" README.md || fail "README missing new one-click url"
|
||
grep -q "mirror.ghproxy.com/https://raw.githubusercontent.com/leecyno1/auto-install-Openclaw/main/install.sh" README.md || fail "README missing mirror one-click url"
|
||
pass "README command markers"
|
||
|
||
# 6) 独立仓库命名检查(不应再指向旧仓库)
|
||
if rg -n "miaoxworld/OpenClawInstaller|raw.githubusercontent.com/miaoxworld/OpenClawInstaller" README.md install.sh config-menu.sh docs/feishu-setup.md >/dev/null 2>&1; then
|
||
fail "found legacy upstream repository references"
|
||
fi
|
||
pass "independent repo markers"
|
||
|
||
# 7) 1:1 清单文档存在性检查
|
||
[ -f docs/official-compatibility-checklist.md ] || fail "missing official compatibility checklist doc"
|
||
pass "compatibility checklist doc"
|
||
|
||
# 8) auto-fix-openclaw + Claude/Codex 修复入口检查
|
||
grep -q 'AUTO_FIX_OPENCLAW_REPO_URL=' config-menu.sh || fail "missing auto-fix-openclaw repo variable"
|
||
grep -q 'AI 自动修复 OpenClaw' config-menu.sh || fail "missing AI auto-fix menu entry"
|
||
grep -q '执行 AI 修复(选择 Claude/Codex)' config-menu.sh || fail "missing unified AI repair entry"
|
||
grep -q 'choose_auto_fix_repair_provider' config-menu.sh || fail "missing provider chooser function"
|
||
grep -q 'check_codex_ready' config-menu.sh || fail "missing codex readiness guard"
|
||
grep -q 'codex login status' config-menu.sh || fail "missing codex login status check"
|
||
grep -q '自动读取错误日志摘要' config-menu.sh || fail "missing log-driven repair hint"
|
||
grep -q 'run_auto_fix_provider_repair codex' config-menu.sh || fail "missing codex repair entry"
|
||
grep -q 'run_auto_fix_provider_repair claudecode' config-menu.sh || fail "missing claudecode repair entry"
|
||
pass "auto-fix menu markers"
|
||
|
||
echo "All preflight checks passed."
|