f60aa94
ZhenYi
feat(push): add support for targeted message delivery with optional subscription filtering
f60aa94
#!/usr/bin/env bash
# 契约闸门:openapi.json 与 packages/apiclient 都必须与源码当前状态一致。
#
# scripts/contract-check.sh # spec + 客户端
# scripts/contract-check.sh --spec-only # 只比 openapi.json(需要 cargo)
# scripts/contract-check.sh --client-only# 只比生成客户端(需要 pnpm)
set -euo pipefail
cd "$(dirname "$0")/.."
check_spec() {
cargo run -q -p app -- openapi --check
}
check_client() {
local snapshot
snapshot="$(mktemp -d)"
cp -R packages/apiclient "$snapshot/committed"
pnpm exec orval
if ! diff -ru "$snapshot/committed" packages/apiclient; then
echo "packages/apiclient is out of date; run \`just openapi\` to regenerate" >&2
exit 1
fi
rm -rf "$snapshot"
}
case "${1:-all}" in
--spec-only) check_spec ;;
--client-only) check_client ;;
all) check_spec && check_client ;;
*)
echo "usage: $0 [--spec-only|--client-only]" >&2
exit 2
;;
esac