94 lines
2.4 KiB
Python
94 lines
2.4 KiB
Python
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() |