Files
JWeBot/tools/check-config.sh
T
JWeBot Contributors afc71e63a7
check / local-gate (push) Failing after 1m35s
Release beta 1.0.0 baseline
2026-10-16 01:07:07 +08:00

91 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
set -eu
cd "$(dirname "$0")/.."
version=$(cat VERSION)
case "$version" in
beta\ [0-9]*.[0-9]*.[0-9]*.[0-9][0-9][0-9][0-9])
;;
*)
echo "VERSION must match: beta X.Y.Z.MMDD" >&2
exit 1
;;
esac
grep -Fq "release = \"$version\"" pyproject.toml
grep -Fq "$version" README.md
grep -Fq "## $version" CHANGELOG.md
for path in \
config/README.md \
config/templates/default/manifest.toml \
config/templates/default/components/bot.toml \
config/templates/default/components/providers.toml \
config/templates/default/components/runtime.toml \
config/templates/default/components/debug.toml \
config/templates/default/components/notification.toml \
config/templates/default/components/deployment.toml \
config/templates/default/context/people.json \
config/templates/default/secrets/runtime.env \
config/templates/default/overrides/runtime.env \
config/templates/default/overrides/root.env \
config/schemas/profile-manifest.schema.json \
config/schemas/private-context.schema.json \
config/schemas/incident.schema.json \
config/schemas/debug-event.schema.json \
docs/configuration-guide.md \
docs/configuration-inventory.md
do
test -f "$path"
done
temporary=$(mktemp -d)
trap 'rm -rf "$temporary"' EXIT HUP INT TERM
PYTHONPATH=packages/jwebot-config/src \
python3 tools/jwebot-config.py validate \
--path config/templates/default \
--config-root "$temporary/config" \
--state-root "$temporary/state" >/dev/null
python3 - config/schemas/*.json <<'PY'
import json
import sys
from pathlib import Path
for value in sys.argv[1:]:
parsed = json.loads(Path(value).read_text(encoding="utf-8"))
if not isinstance(parsed, dict) or "$schema" not in parsed:
raise SystemExit(f"invalid schema: {value}")
PY
if grep -E '^(JWEBOT|WECHAT)_[A-Z0-9_]*(KEY|TOKEN|PASSWORD|SECRET)=.+' \
config/templates/default/secrets/runtime.env >/dev/null
then
echo "Default profile contains a populated secret" >&2
exit 1
fi
for value in \
JWEBOT_CONFIG_ROOT \
JWEBOT_CONFIG_STATE_ROOT \
JWEBOT_BOT_MENTION \
JWEBOT_PRIVATE_CONTEXT_FILE \
JWEBOT_EDGE_DEEPSEEK_API_KEY \
JWEBOT_EDGE_STEAM_API_KEY \
JWEBOT_EDGE_STEAM_ID64 \
JWEBOT_EDGE_STEAM_PROXY_URL \
JWEBOT_DEBUG_INCIDENT_ROOT \
JWEBOT_DEBUG_SESSION_ROOT \
JWEBOT_HEALTH_NOTIFICATION_CONFIG \
JWEBOT_RUNTIME_USER \
JWEBOT_RUNTIME_HOME \
JWEBOT_RUNTIME_PYTHON \
JWEBOT_PRODUCTION_BACKUP_ROOT
do
grep -Fq "$value" docs/configuration-guide.md
done
rm -rf "$temporary"
trap - EXIT HUP INT TERM