From f81cd8de1bc679786579f14c3da28285789b38e1 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 12 Sep 2017 08:51:45 +0200 Subject: o Implementing kicad-make-bom as a tool. --- src/ee/tools/__init__.py | 21 +++++++++++++++++++ src/ee/tools/digikey_download_facts.py | 7 ++----- src/ee/tools/kicad_make_bom.py | 37 ++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 src/ee/tools/kicad_make_bom.py (limited to 'src') diff --git a/src/ee/tools/__init__.py b/src/ee/tools/__init__.py index e69de29..893ee31 100644 --- a/src/ee/tools/__init__.py +++ b/src/ee/tools/__init__.py @@ -0,0 +1,21 @@ +import os.path + + +def _mkdir_and_open(path): + dirname = os.path.dirname(path) + + if len(dirname) > 0: + if not os.path.isdir(dirname): + os.mkdir(dirname) + + return open(path, "w") + + +def mk_parents(path: str): + dirname = os.path.dirname(path) + + if len(dirname) == 0: + return + + if not os.path.isdir(dirname): + os.mkdir(dirname) diff --git a/src/ee/tools/digikey_download_facts.py b/src/ee/tools/digikey_download_facts.py index 08a8029..c97ba9d 100644 --- a/src/ee/tools/digikey_download_facts.py +++ b/src/ee/tools/digikey_download_facts.py @@ -7,6 +7,7 @@ from colors import color import ee.digikey as dk from ee.digikey import SearchResponseTypes, DigikeyProduct +from ee.tools import mk_parents parser = argparse.ArgumentParser(description="Download facts about parts from Digi-Key") @@ -41,11 +42,7 @@ def on_product(product: DigikeyProduct): y = product.to_yaml() filename = mpn_to_path(product.mpn) - dirname = os.path.dirname(filename) - - if not os.path.isdir(dirname): - os.mkdir(dirname) - + mk_parents(filename) with open(filename, "w") as f: yaml.dump(y, f, encoding="utf-8", allow_unicode=True) diff --git a/src/ee/tools/kicad_make_bom.py b/src/ee/tools/kicad_make_bom.py new file mode 100644 index 0000000..518cf75 --- /dev/null +++ b/src/ee/tools/kicad_make_bom.py @@ -0,0 +1,37 @@ +import argparse +import ee.kicad as kicad +from ee.tools import mk_parents +from xml.etree import ElementTree +from xml.dom import minidom + +parser = argparse.ArgumentParser(description="Create a bom XML file from a KiCAD schematic") + +parser.add_argument("--sch", + required=True, + metavar="SCH", + help="The schematic to read") + +parser.add_argument("--out", + metavar="FILE", + help="The output file") + +parser.add_argument("--pretty", + action='store_true', + help="Pretty print the XML") + +args = parser.parse_args() + +sch = kicad.read_schematic(args.sch) + +bom = kicad.to_bom(sch) +xml = ElementTree.tostring(bom, encoding='unicode') + +if args.pretty: + xml = minidom.parseString(xml).toprettyxml(indent=" ") + +if args.out: + mk_parents(args.out) + with open(args.out, "w") as f: + f.write(xml) +else: + print(xml) -- cgit v1.2.3