91 lines
2.5 KiB
Bash
Executable File
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
|