69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Sync the canonical observability CSS to the Flask-served static path.
|
|
|
|
The project keeps the design-system source at:
|
|
static/css/observability-system.css
|
|
|
|
Production Flask static serving currently exposes:
|
|
web/static/css/observability-system.css
|
|
|
|
This helper keeps the two files byte-identical so deploys do not regress into
|
|
"HTML links the CSS but /static/css/observability-system.css is 404/stale".
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import shutil
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
SOURCE = ROOT / "static/css/observability-system.css"
|
|
TARGET = ROOT / "web/static/css/observability-system.css"
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser(description="Sync or check observability CSS mirror")
|
|
parser.add_argument(
|
|
"--check",
|
|
action="store_true",
|
|
help="Only verify source and Flask static mirror are byte-identical.",
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
if not SOURCE.exists():
|
|
print(f"ERROR: missing source CSS: {SOURCE.relative_to(ROOT)}")
|
|
return 1
|
|
|
|
if not args.check:
|
|
TARGET.parent.mkdir(parents=True, exist_ok=True)
|
|
|
|
source_bytes = SOURCE.read_bytes()
|
|
target_bytes = TARGET.read_bytes() if TARGET.exists() else b""
|
|
|
|
if source_bytes == target_bytes:
|
|
action = "check" if args.check else "sync"
|
|
print(f"Observability CSS {action}: already in sync")
|
|
print(f"- source: {SOURCE.relative_to(ROOT)}")
|
|
print(f"- target: {TARGET.relative_to(ROOT)}")
|
|
return 0
|
|
|
|
if args.check:
|
|
print("Observability CSS check: FAIL")
|
|
print(f"- source: {SOURCE.relative_to(ROOT)}")
|
|
print(f"- target: {TARGET.relative_to(ROOT)}")
|
|
print("- fix: python3 scripts/sync_observability_css.py")
|
|
return 1
|
|
|
|
shutil.copyfile(SOURCE, TARGET)
|
|
print("Observability CSS sync: synced")
|
|
print(f"- source: {SOURCE.relative_to(ROOT)}")
|
|
print(f"- target: {TARGET.relative_to(ROOT)}")
|
|
print(f"- bytes: {len(source_bytes)}")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|