"""Dump Pages env_var names/types and latest deployment id (no secret values).""" from __future__ import annotations import json import os import sys import urllib.request ACCT = "510534f7f6284344aadaf2f5a0794d48" PROJ = "climperor-relations" def get(path: str) -> dict: email = os.environ.get("CLOUDFLARE_EMAIL") or os.environ.get( "KEYZOO_ASSET_META_USERNAME" ) key = os.environ.get("CLOUDFLARE_API_KEY") or os.environ.get( "KEYZOO_ASSET_SECRET_GLOBAL_API_KEY" ) req = urllib.request.Request( f"https://api.cloudflare.com/client/v4{path}", headers={"X-Auth-Email": email, "X-Auth-Key": key}, ) with urllib.request.urlopen(req, timeout=60) as r: return json.load(r) def main() -> int: p = get(f"/accounts/{ACCT}/pages/projects/{PROJ}")["result"] dc = p.get("deployment_configs") or {} for env in ("production", "preview"): ev = (dc.get(env) or {}).get("env_vars") or {} print(env, "keys", sorted(ev.keys())) for k, v in sorted(ev.items()): print( " ", k, "type=", (v or {}).get("type"), "has_value=", "value" in (v or {}), ) deps = get(f"/accounts/{ACCT}/pages/projects/{PROJ}/deployments?per_page=2")[ "result" ] for d0 in deps or []: print( "deployment", d0.get("id"), d0.get("environment"), d0.get("created_on"), d0.get("url"), ) if d0.get("id"): det = get( f"/accounts/{ACCT}/pages/projects/{PROJ}/deployments/{d0['id']}" )["result"] # Some APIs nest env under build_config / env_vars for k in sorted(det.keys()): if "env" in k.lower() or k in ("aliases", "is_skipped", "production_branch"): val = det.get(k) s = json.dumps(val, ensure_ascii=False) if not isinstance(val, str) else val print(f" {k}: {s[:240]}") return 0 if __name__ == "__main__": sys.exit(main())