release: public alpha 0.6.0 baseline
This commit is contained in:
Executable
+90
@@ -0,0 +1,90 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
version=$(cat VERSION)
|
||||
case "$version" in
|
||||
alpha\ [0-9]*.[0-9]*.[0-9]*.[0-9][0-9][0-9][0-9])
|
||||
;;
|
||||
*)
|
||||
echo "VERSION must match: alpha 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
|
||||
Reference in New Issue
Block a user