Files

44 lines
1.7 KiB
Python

#!/usr/bin/env python3
"""Query the generated organization design registry by surface/pattern/state."""
import argparse
import json
import os
import sys
HERE = os.path.dirname(os.path.abspath(__file__))
ROOT = os.environ.get("CLAUDE_PROJECT_DIR") or os.path.dirname(os.path.dirname(HERE))
REGISTRY = os.path.join(ROOT, "org-os", "08-design", "generated", "registry.json")
def main(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument("--surface")
parser.add_argument("--pattern")
parser.add_argument("--state", choices=["experimental", "candidate", "stable", "deprecated"])
args = parser.parse_args(argv)
try:
with open(REGISTRY, encoding="utf-8") as handle:
registry = json.load(handle)
except Exception as exc:
print(f"design registry unavailable; run compile_design_system.py: {exc}", file=sys.stderr)
return 2
result = {"current-release": registry.get("current-release")}
for collection in ("components", "patterns", "page-archetypes"):
values = registry.get(collection, [])
if args.surface:
values = [item for item in values if args.surface in (item.get("surfaces") or [])]
if args.state:
values = [item for item in values if item.get("state") == args.state]
if args.pattern:
values = [item for item in values if (
item.get("id") == args.pattern
or args.pattern in (item.get("patterns") or [])
or args.pattern in (item.get("components") or []))]
result[collection] = values
print(json.dumps(result, ensure_ascii=False, indent=2))
return 0
if __name__ == "__main__":
raise SystemExit(main())