Files
BanGUI/frontend/scripts/validate-types.sh
Lukas 4a649e7347 chore: bump to v0.9.19-rc.1 and add local OpenAPI build support
- Add release candidate (rc) support to release.sh with latestRC tagging
- Bump VERSION, backend pyproject.toml, and frontend package.json to 0.9.19-rc.1
- Add local frontend/openapi.json so build no longer needs running backend
- Update generate:types and validate-types.sh to use local openapi.json
- Fix frontend tests: remove unused imports/variables and update mock data
2026-05-24 22:05:34 +02:00

52 lines
1.7 KiB
Bash

#!/bin/bash
# Validate that generated types match the committed types.
# This script is designed to run in CI/CD pipelines to prevent type drift.
#
# Exit codes:
# 0 — types are in sync
# 1 — types are out of sync
# 2 — backend is not accessible
# 3 — generation failed
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
FRONTEND_DIR="$(dirname "$SCRIPT_DIR")"
TYPES_DIR="${FRONTEND_DIR}/src/types"
GENERATED_FILE="${TYPES_DIR}/generated.ts"
TEMP_FILE=$(mktemp)
trap "rm -f $TEMP_FILE" EXIT
# Determine OpenAPI source: local file or backend URL
BACKEND_URL="${BANGUI_BACKEND_URL:-http://localhost:8000}"
OPENAPI_SOURCE=""
if [[ -f "${FRONTEND_DIR}/openapi.json" ]]; then
OPENAPI_SOURCE="${FRONTEND_DIR}/openapi.json"
echo "📋 Validating OpenAPI schema types (local openapi.json)..."
elif curl -sf "${BACKEND_URL}/api/openapi.json" > /dev/null 2>&1; then
OPENAPI_SOURCE="${BACKEND_URL}/api/openapi.json"
echo "📋 Validating OpenAPI schema types (backend ${BACKEND_URL})..."
else
echo "❌ Backend not accessible at ${BACKEND_URL}/api/openapi.json and no local openapi.json found" >&2
exit 2
fi
# Generate types to a temporary file
if ! npx openapi-typescript "${OPENAPI_SOURCE}" -o "$TEMP_FILE" 2>&1; then
echo "❌ Failed to generate types from OpenAPI schema" >&2
exit 3
fi
# Compare with committed generated types
if ! diff -u "$GENERATED_FILE" "$TEMP_FILE" > /dev/null 2>&1; then
echo "❌ Generated types differ from committed types" >&2
echo ""
echo "Run 'npm run generate:types' to update types, then commit the changes:"
diff -u "$GENERATED_FILE" "$TEMP_FILE" || true
exit 1
fi
echo "✅ Types are in sync with backend schema"
exit 0