diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2019-06-14 21:42:18 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2019-06-14 21:42:18 +0200 |
commit | b4eeed35d78f82ea988d70de177d522ca20257ea (patch) | |
tree | f5db959036edee3c292e906d1ac40a66bd8c2e2b /src/ee/tools/bom_to_csv.py | |
parent | 89197dad4f5f427faa7fba12971b20037ad5ba71 (diff) | |
download | ee-python-b4eeed35d78f82ea988d70de177d522ca20257ea.tar.gz ee-python-b4eeed35d78f82ea988d70de177d522ca20257ea.tar.bz2 ee-python-b4eeed35d78f82ea988d70de177d522ca20257ea.tar.xz ee-python-b4eeed35d78f82ea988d70de177d522ca20257ea.zip |
bom-to-csv: Starting on a generic tool to generate CSV files from BOMs.
Diffstat (limited to 'src/ee/tools/bom_to_csv.py')
-rw-r--r-- | src/ee/tools/bom_to_csv.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/ee/tools/bom_to_csv.py b/src/ee/tools/bom_to_csv.py new file mode 100644 index 0000000..181eb4e --- /dev/null +++ b/src/ee/tools/bom_to_csv.py @@ -0,0 +1,55 @@ +import argparse +import csv +from pathlib import Path + +import ee.tools +from ee.part.bom import load_bom, check_bom, generate_bom, join_refs + +parser = argparse.ArgumentParser() +ee.tools.add_default_argparse_group(parser) + +parser.add_argument("--bom", + required=True, + metavar="PART DB") + +parser.add_argument("--out", + required=True, + metavar="CSV") + +parser.add_argument("--part-db", + nargs="*", + required=True, + metavar="PART DB") + +parser.add_argument("--allow-incomplete", + default=False, + action="store_true") + +args = parser.parse_args() +ee.tools.process_default_argparse_group(args) + +bom_path = Path(args.bom) +part_files = [Path(p) for p in args.part_db] +out_path = Path(args.out) + +bom_parts, supplier_parts = load_bom(bom_path, part_files) +check_bom(bom_parts, supplier_parts) + +lines = generate_bom(args.allow_incomplete, bom_parts, supplier_parts) + +if lines is not None: + with out_path.open("w") as f: + w = csv.writer(f) + w.writerow(["Quantity", "MPN", "SPN", "References"]) + + for line in lines: + mpn = line.part.get_only_mpn() + spn = line.part.get_only_spn() + + row = [ + str(len(line.refs)), + mpn.valueProp if mpn else "", + spn.valueProp if spn else "", + join_refs(line.refs), + ] + w.writerow(row) |