#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" SCRIPT="$ROOT_DIR/scripts/release-preflight.sh" DEV_SETUP="$ROOT_DIR/docs/DEV_SETUP.md" bash -n "$SCRIPT" backend_without_url="$( RELEASE_VERIFY_REMOTE_BACKEND=true bash "$SCRIPT" 2>&1 || true )" grep -Fq 'remote verification flags require RELEASE_REMOTE_URL' <<<"$backend_without_url" schema_without_url="$( RELEASE_VERIFY_REMOTE_SCHEMA=true bash "$SCRIPT" 2>&1 || true )" grep -Fq 'remote verification flags require RELEASE_REMOTE_URL' <<<"$schema_without_url" if grep -Fq 'RELEASE_VERIFY_REMOTE_BACKEND=true requires RELEASE_VERIFY_REMOTE_MATCH=true' "$SCRIPT"; then echo 'FAIL: backend-only verification is still coupled to static resource matching' >&2 exit 1 fi if grep -Fq 'RELEASE_VERIFY_REMOTE_SCHEMA=true requires RELEASE_VERIFY_REMOTE_MATCH=true' "$SCRIPT"; then echo 'FAIL: schema-only verification is still coupled to static resource matching' >&2 exit 1 fi backend_call_line="$(grep -n '^[[:space:]]*require_remote_backend_match$' "$SCRIPT" | cut -d: -f1)" static_scope_line="$(grep -n '^[[:space:]]*if \[\[ "\$verify_remote_match" == "true" \]\]; then$' "$SCRIPT" | cut -d: -f1)" [[ -n "$backend_call_line" && -n "$static_scope_line" && "$backend_call_line" -lt "$static_scope_line" ]] grep -Fq 'require_static_artifacts="$verify_remote_match"' "$SCRIPT" grep -Fq 'require_backend_artifact="$verify_remote_backend"' "$SCRIPT" grep -Fq 'backend_jar="${RELEASE_LOCAL_BACKEND_PATH:-backend/ruoyi-admin/target/ruoyi-admin.jar}"' "$SCRIPT" grep -Fq 'artifact_commit="${RELEASE_ARTIFACT_COMMIT:-HEAD}"' "$SCRIPT" grep -Fq 'git merge-base --is-ancestor "$artifact_commit_sha" HEAD' "$SCRIPT" grep -Fq 'RELEASE_VERIFY_REMOTE_BACKEND=true RELEASE_VERIFY_REMOTE_SCHEMA=true ./scripts/release-preflight.sh' "$DEV_SETUP" grep -Fq 'RELEASE_VERIFY_REMOTE_MATCH=true RELEASE_VERIFY_REMOTE_BACKEND=true RELEASE_VERIFY_REMOTE_SCHEMA=true ./scripts/release-preflight.sh' "$DEV_SETUP" echo 'PASS: release preflight supports scoped backend/schema verification and preserves the full-package mode'