#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" RELEASE_ROOT="${DOMAINCHECK_RELEASE_ROOT:-${ROOT_DIR}/release}" REPORT_PATH="${RELEASE_ROOT}/final_release_report.json" mkdir -p "${RELEASE_ROOT}" bash "${ROOT_DIR}/package_domain_release.sh" LATEST_JSON_PATH="${RELEASE_ROOT}/latest_release.json" if [[ ! -f "${LATEST_JSON_PATH}" ]]; then echo "latest_release.json not found" >&2 exit 1 fi VERIFY_OUTPUT="$(bash "${ROOT_DIR}/verify_domain_release.sh")" python3 - "${LATEST_JSON_PATH}" "${REPORT_PATH}" "${VERIFY_OUTPUT}" <<'PY' import json import sys from datetime import datetime from pathlib import Path latest_json_path = Path(sys.argv[1]) report_path = Path(sys.argv[2]) verify_payload = json.loads(sys.argv[3]) latest_payload = json.loads(latest_json_path.read_text(encoding="utf-8")) verify_ok = bool(verify_payload.get("ok", False)) smoke_ok = bool(latest_payload.get("smoke_test_ok", False)) blocked_reasons = [] if not verify_ok: blocked_reasons.append("verify_failed") if not smoke_ok: blocked_reasons.append("smoke_test_failed_or_skipped") report = { "generated_at": datetime.now().isoformat(timespec="seconds"), "ok": verify_ok and smoke_ok, "latest_release": latest_payload, "verify": verify_payload, "release_gate": { "verify_ok": verify_ok, "smoke_test_ok": smoke_ok, "blocked_reasons": blocked_reasons, "decision": "ready" if not blocked_reasons else "blocked", }, } report_path.write_text(json.dumps(report, ensure_ascii=False, indent=2), encoding="utf-8") print(json.dumps({"report": str(report_path), "ok": report["ok"]}, ensure_ascii=False, indent=2)) PY printf 'final release prepared\n' printf 'report: %s\n' "${REPORT_PATH}"