Public Access
98 lines
2.2 KiB
Python
98 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|||
|
|
|
||
|
|
import json
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
|
||
|
|
DATA = Path("data")
|
||
|
|
REPORTS = Path("reports")
|
||
|
|
|
||
|
|
|
||
|
|
def versions():
|
||
|
|
return sorted(
|
||
|
|
[d for d in DATA.iterdir() if d.is_dir()],
|
||
|
|
key=lambda p: [int(x) for x in p.name.split(".")]
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def modules():
|
||
|
|
first = versions()[0]
|
||
|
|
return sorted(f.stem for f in first.glob("*.json"))
|
||
|
|
|
||
|
|
|
||
|
|
def write_module(module):
|
||
|
|
|
||
|
|
outfile = REPORTS / f"{module}.md"
|
||
|
|
|
||
|
|
with outfile.open("w", encoding="utf8") as out:
|
||
|
|
|
||
|
|
out.write(f"# {module}\n\n")
|
||
|
|
|
||
|
|
for version in versions():
|
||
|
|
|
||
|
|
infile = version / f"{module}.json"
|
||
|
|
|
||
|
|
if not infile.exists():
|
||
|
|
continue
|
||
|
|
|
||
|
|
out.write(f"## Version {version.name}\n\n")
|
||
|
|
|
||
|
|
data = json.loads(infile.read_text())
|
||
|
|
|
||
|
|
if not data:
|
||
|
|
out.write("_no migrations found_\n\n")
|
||
|
|
continue
|
||
|
|
|
||
|
|
for model in data['files']:
|
||
|
|
|
||
|
|
out.write(f"### {model['class']}\n\n")
|
||
|
|
out.write(f"Line: {model['line']}\n\n")
|
||
|
|
|
||
|
|
for op in model["operations"]:
|
||
|
|
|
||
|
|
out.write(
|
||
|
|
f"- **{op['phase']}** "
|
||
|
|
f"`{op['operation']}`\n"
|
||
|
|
)
|
||
|
|
|
||
|
|
if "condition" in op:
|
||
|
|
out.write(
|
||
|
|
f" - condition: `{op['condition']}`\n"
|
||
|
|
)
|
||
|
|
|
||
|
|
if op["object"]:
|
||
|
|
out.write(
|
||
|
|
f" - object: `{op['object']}`\n"
|
||
|
|
)
|
||
|
|
|
||
|
|
if op["args"]:
|
||
|
|
out.write(
|
||
|
|
f" - args: `{', '.join(op['args'])}`\n"
|
||
|
|
)
|
||
|
|
|
||
|
|
if op["kwargs"]:
|
||
|
|
out.write(" - kwargs:\n")
|
||
|
|
|
||
|
|
for k, v in op["kwargs"].items():
|
||
|
|
out.write(
|
||
|
|
f" - {k}: `{v}`\n"
|
||
|
|
)
|
||
|
|
|
||
|
|
out.write("\n")
|
||
|
|
|
||
|
|
out.write("\n")
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
|
||
|
|
REPORTS.mkdir(exist_ok=True)
|
||
|
|
|
||
|
|
for module in modules():
|
||
|
|
|
||
|
|
print(module)
|
||
|
|
|
||
|
|
write_module(module)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|