#!/usr/bin/env python3
"""Revoke one signed WordPress Bridge Core release."""

from __future__ import annotations

import argparse
import json
import sys
from datetime import datetime
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(BASE_DIR))

from sqlalchemy import select

from config.control_plane import get_control_plane_session
from bridge_platform.tenants.models import WordPressBridgeRelease


def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument("version")
    parser.add_argument("--reason", required=True)
    args = parser.parse_args()
    reason = args.reason.strip()
    if not reason or len(reason) > 500:
        parser.error("--reason must contain between 1 and 500 characters")

    with get_control_plane_session() as session:
        release = session.execute(select(WordPressBridgeRelease).where(
            WordPressBridgeRelease.version == args.version,
        )).scalar_one_or_none()
        if release is None:
            print(json.dumps({"status": "not_found"}))
            return 1
        release.status = "revoked"
        release.revoked_at = datetime.utcnow()
        release.revoked_reason = reason
        session.commit()

    print(json.dumps({
        "status": "revoked", "version": args.version, "reason": reason,
    }))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
