Initial commit
This commit is contained in:
46
.github/report_processing/process_bom_files.py
vendored
Normal file
46
.github/report_processing/process_bom_files.py
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
# look it would be piss easy to just keep it as a CSV but we can post process to add cool things like cost to each of the parts
|
||||
import csv
|
||||
import sys
|
||||
import chevron
|
||||
import datetime
|
||||
from pprint import pprint
|
||||
|
||||
file_path_delimter = "\\" if sys.platform == "win32" else "/"
|
||||
|
||||
def load_bom(filename : str) -> dict:
|
||||
out_dict = {
|
||||
"parts" : [],
|
||||
"time" : str(datetime.datetime.now().time()),
|
||||
"date" : str(datetime.datetime.now().date().strftime("%d-%m-%Y")),
|
||||
"total_cost" : 0,
|
||||
"total_parts" : 0,
|
||||
"project_name" : filename.strip(".csv").strip("bom").split(file_path_delimter)[-1]
|
||||
}
|
||||
|
||||
with open(filename, "r") as csv_file:
|
||||
for row in csv.DictReader(csv_file):
|
||||
part_cost = 0
|
||||
out_dict["total_parts"] += 1
|
||||
out_dict["parts"].append(
|
||||
{
|
||||
"Reference" : row["Refs"],
|
||||
"Value" : row["Value"],
|
||||
"Quantity" : row["Qty"],
|
||||
"part_number" : row["Footprint"],
|
||||
"cost" : part_cost, # add some API call somewhere here
|
||||
}
|
||||
)
|
||||
return out_dict
|
||||
|
||||
def main():
|
||||
report_hash = load_bom(sys.argv[1])
|
||||
# pprint(report_hash)
|
||||
with open(sys.argv[2], "r") as txt:
|
||||
out = chevron.render(txt.read(), report_hash)
|
||||
with open(sys.argv[3], "w") as md:
|
||||
md.write(out)
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user