Initial commit
This commit is contained in:
94
.github/report_processing/process_output_files.py
vendored
Normal file
94
.github/report_processing/process_output_files.py
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
import chevron
|
||||
import sys
|
||||
import datetime
|
||||
import json
|
||||
import glob
|
||||
from pathlib import Path
|
||||
|
||||
from pprint import pprint
|
||||
|
||||
|
||||
# erc
|
||||
# {
|
||||
# "project_name" : "string",
|
||||
# "passing_erc" : "bool",
|
||||
# "erc_summary_link" : "link",
|
||||
# }
|
||||
|
||||
# drc
|
||||
# {
|
||||
# "project_name" : "string",
|
||||
# "passing_drc" : "bool",
|
||||
# "drc_summary_link" : "link",
|
||||
# }
|
||||
|
||||
# project
|
||||
# {
|
||||
# "project_name" : "string",
|
||||
# "project_link" : "link",
|
||||
# "schematic_link" : "link",
|
||||
# "gerber_link" : "link",
|
||||
# "bom_report_link" : "link",
|
||||
# "bom_csv_link" : "link"
|
||||
# }
|
||||
|
||||
EXTRAS_FILENAME = "readme_extras.json"
|
||||
|
||||
def load_json_file(filename : str) -> dict:
|
||||
with open(Path(f"{filename}/{filename}"), "r") as js:
|
||||
return json.loads(js.read())
|
||||
|
||||
def create_hash(filenames : list[str]) -> dict:
|
||||
report_outs = filenames
|
||||
report_outs.remove("readme_extras.json")
|
||||
|
||||
extras = {}
|
||||
with open("readme_extras.json", "r") as js:
|
||||
extras = json.loads(js.read())
|
||||
|
||||
reports_dicts : list[dict] = []
|
||||
for report_name in report_outs:
|
||||
reports_dicts.append(load_json_file(report_name))
|
||||
|
||||
readme_hash = {
|
||||
**extras,
|
||||
"projects" : [],
|
||||
"did_error" : False,
|
||||
"multiple_projects" : None
|
||||
}
|
||||
for report in reports_dicts:
|
||||
for project in readme_hash["projects"]:
|
||||
if project["project_name"] == report["project_name"]:
|
||||
for key in report.keys():
|
||||
project.setdefault(key, report[key])
|
||||
break
|
||||
else:
|
||||
readme_hash["projects"].append(report)
|
||||
|
||||
pprint(readme_hash)
|
||||
|
||||
for project in readme_hash["projects"]:
|
||||
readme_hash["did_error"] |= not project["passing_erc"]
|
||||
readme_hash["did_error"] |= not project["passing_drc"]
|
||||
project.setdefault("passing_erc_emoji", "✅" if project["passing_erc"] == "true" else "❌")
|
||||
project.setdefault("passing_drc_emoji", "✅" if project["passing_drc"] == "true" else "❌")
|
||||
|
||||
readme_hash["multiple_projects"] = True if len(readme_hash["projects"]) > 1 else None
|
||||
|
||||
pprint(readme_hash)
|
||||
return readme_hash
|
||||
|
||||
def main():
|
||||
print(sys.argv)
|
||||
|
||||
readme_template, *args = sys.argv[1:]
|
||||
|
||||
report_hash = create_hash(args)
|
||||
|
||||
with open(readme_template, "r") as txt:
|
||||
out = chevron.render(txt.read(), report_hash)
|
||||
with open("README.md", "w") as md:
|
||||
md.write(out)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user