#!/usr/bin/env python3
"""Generate a REAL scannable QR (segno) for the outro. Never let an image
model draw a QR — it produces an unscannable near-QR.

segno is installed into a project-local venv because the system Python is
PEP-668 managed (pip refuses global installs).

Env: BRAND_PACK (QR_URL, COLOR_INK), BRAND_PROJECT.
Writes <project>/assets/brand/qr.png
"""
import os
import subprocess
import sys

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from packlib import parse_pack as _parse_pack  # noqa: E402

PACK = _parse_pack(os.environ["BRAND_PACK"])
PROJ = os.environ["BRAND_PROJECT"]
URL = PACK.get("QR_URL", "")
if not URL:
    sys.exit("pack: QR_URL is required for the outro QR")
INK = "#" + PACK.get("COLOR_INK", "231E1E").lstrip("#")
OUT = os.path.join(PROJ, "assets", "brand", "qr.png")

VENV = os.path.join(PROJ, ".venv-qr")
VPY = os.path.join(VENV, "bin", "python")
if not os.path.exists(VPY):
    subprocess.run([sys.executable, "-m", "venv", VENV], check=True)
    subprocess.run([VPY, "-m", "pip", "install", "--quiet", "segno"], check=True)

os.makedirs(os.path.dirname(OUT), exist_ok=True)
code = (
    "import segno\n"
    f"q = segno.make({URL!r}, error='m')\n"
    f"q.save({OUT!r}, scale=20, border=2, dark={INK!r}, light='#FFFFFF')\n"
)
subprocess.run([VPY, "-c", code], check=True)
print("qr:", URL, "->", OUT)
