Files
test-ci/json_to_tree.py
2026-01-22 04:24:24 +01:00

46 lines
1.3 KiB
Python

from io import StringIO
from rich.console import Console
from rich.tree import Tree
import json
import sys
import os
def build_tree(data, tree):
if isinstance(data, dict):
for key, value in data.items():
if isinstance(value, (dict, list)):
branch = tree.add(f"[bold]{key}[/bold]")
build_tree(value, branch)
else:
safe_value = str(value).replace("[", "\\[").replace("]", "\\]")
tree.add(f"{key}: {safe_value}")
elif isinstance(data, list):
for value in data:
if isinstance(value, (dict, list)):
branch = tree.add("-")
build_tree(value, branch)
else:
safe_value = str(value).replace("[", "\\[").replace("]", "\\]")
tree.add(f"{safe_value}")
def main():
file_path = sys.argv[1]
with open(file_path, 'r') as f:
data = json.load(f)
os.makedirs("ci-reports/markdown", exist_ok=True)
buffer = StringIO()
console = Console(file=buffer, record=True, force_terminal=True, color_system="truecolor")
root = Tree(f"📁 {file_path}")
build_tree(data, root)
console.print(root)
with open("ci-reports/markdown/json-tree-view.txt", "w") as f:
f.write(console.export_text(clear=False))
if __name__ == "__main__":
main()