| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- import json
- import os
- import sys
- from pathlib import Path
- PLACEHOLDERS = {
- "{{KSU_VERSION}}": lambda: os.environ.get("KSU_VERSION", "unknown"),
- "{{KSU_GIT_TAG}}": lambda: os.environ.get("KSU_GIT_TAG", "no-tag"),
- "{{KSUN_BRANCH}}": lambda: os.environ.get("KSUN_BRANCH", "dev"),
- "{{KSUN_COMMIT}}": lambda: os.environ.get("KSUN_COMMIT", "unknown"),
- "{{KSU_MANAGER}}": lambda: os.environ.get("KSU_MANAGER", "Placeholder"),
- "{{SUSFS_BRANCHES}}": lambda: os.environ.get("SUSFS_COMMIT", "latest on auto-derived gki-{version} branch"),
- "{{SUSFS_BRANCHS}}": lambda: os.environ.get("SUSFS_COMMIT", "latest on auto-derived gki-{version} branch"),
- }
- def render_markdown(template_path: Path):
- text = template_path.read_text()
- for placeholder, getter in PLACEHOLDERS.items():
- text = text.replace(placeholder, getter())
- print(text, end="")
- config_path = Path(sys.argv[1])
- if config_path.suffix.lower() == ".md":
- render_markdown(config_path)
- sys.exit(0)
- # Backward-compatible JSON renderer for older release configs.
- def emit(text=""):
- print(text)
- def emit_list(items):
- if isinstance(items, list):
- for item in items:
- emit(f"- {item}")
- def emit_description(value):
- if isinstance(value, list):
- for line in value:
- emit(line)
- elif value:
- emit(str(value))
- data = json.loads(config_path.read_text())
- emit("**IMPORTANT DISCLAIMER**")
- for line in data["release"]["disclaimer"]:
- emit(line)
- kernelsu = data.get("kernelsu", {})
- emit()
- emit(f"## {kernelsu.get('name', 'KernelSU-Next')}")
- emit(f"- Version: {os.environ.get('KSU_VERSION', kernelsu.get('version', 'unknown'))}")
- emit(f"- Tag: {os.environ.get('KSU_GIT_TAG', kernelsu.get('tag', 'no-tag'))}")
- emit(f"- Branch: {os.environ.get('KSUN_BRANCH', kernelsu.get('branch', 'dev'))}")
- emit(f"- Commit: {os.environ.get('KSUN_COMMIT', kernelsu.get('commit', 'unknown'))}")
- if kernelsu.get("url"):
- emit(f"- URL: {kernelsu['url']}")
- if kernelsu.get("manager"):
- emit(f"- Manager: {kernelsu['manager']}")
- skip_keys = {"release", "kernelsu"}
- for key in data.keys():
- if key in skip_keys:
- continue
- section = data[key]
- emit()
- emit(f"## {section.get('name', key)}")
- if section.get("description"):
- emit_description(section["description"])
- if section.get("version"):
- emit(f"- Version: {section['version']}")
- if section.get("tag"):
- emit(f"- Tag: {section['tag']}")
- if section.get("branch"):
- emit(f"- Branch: {section['branch']}")
- if key == "susfs":
- susfs_commit = os.environ.get("SUSFS_COMMIT", "")
- if susfs_commit:
- emit(f"- Commit: `{susfs_commit}`")
- else:
- emit("- Commit: latest on auto-derived gki-{version} branch")
- if section.get("items"):
- emit_list(section["items"])
- if section.get("url"):
- emit(f"- URL: {section['url']}")
|