From d2abf5f5976edbdba5e1426e21e3210be0df3738 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 13 Jun 2020 19:50:50 +0200 Subject: [PATCH] Make BOM output optional --- src/batch.py | 4 ++-- src/wireviz.py | 44 +++++++++++++++++++++++--------------------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/batch.py b/src/batch.py index fc80270..b2a23b2 100644 --- a/src/batch.py +++ b/src/batch.py @@ -9,12 +9,12 @@ with open(readme, 'w') as file: for i in range(1,3): fn = '../examples/demo{:02d}.yml'.format(i) print(fn) - wireviz.parse(fn) + wireviz.parse(fn, gen_bom=False) for i in range(1,7): fn = '../examples/ex{:02d}.yml'.format(i) print(fn) - wireviz.parse(fn) + wireviz.parse(fn, gen_bom=False) file.write('## Example {:02d}\n'.format(i)) file.write('![](ex{:02d}.png)\n\n'.format(i)) diff --git a/src/wireviz.py b/src/wireviz.py index d2ed69c..aae122d 100755 --- a/src/wireviz.py +++ b/src/wireviz.py @@ -245,7 +245,7 @@ class Harness: return dot - def output(self, filename, directory='_output', view=False, cleanup=True, format='pdf'): + def output(self, filename, directory='_output', view=False, cleanup=True, format='pdf', gen_bom=False): # graphical output d = self.create_graph() for f in format: @@ -253,23 +253,24 @@ class Harness: d.render(filename=filename, directory=directory, view=view, cleanup=cleanup) d.save(filename='{}.gv'.format(filename), directory=directory) # bom output - # connectors - _con = self.bom_connectors() - header_con = ['Type','Gender','Pin count','Qty','Designators'] - bom_con = tuplelist2tsv(_con, header_con) - with open('{}.connectors.bom.tsv'.format(filename),'w') as file: - file.write(bom_con) - # cables - _cbl, _cut = self.bom_cables_and_cutlist() - header_cbl = ['Gauge','Gauge unit','Wire count','Shield','Total length','Designators'] - bom_cbl = tuplelist2tsv(_cbl, header_cbl) - with open('{}.cables.bom.tsv'.format(filename),'w') as file: - file.write(bom_cbl) - # cutlist - header_cut = ['Gauge','Gauge unit','Wire count','Shield','Length','Qty','Designators'] - bom_cut = tuplelist2tsv(_cut, header_cut) - with open('{}.cutlist.bom.tsv'.format(filename),'w') as file: - file.write(bom_cut) + if gen_bom: + # connectors + _con = self.bom_connectors() + header_con = ['Type','Gender','Pin count','Qty','Designators'] + bom_con = tuplelist2tsv(_con, header_con) + with open('{}.connectors.bom.tsv'.format(filename),'w') as file: + file.write(bom_con) + # cables + _cbl, _cut = self.bom_cables_and_cutlist() + header_cbl = ['Gauge','Gauge unit','Wire count','Shield','Total length','Designators'] + bom_cbl = tuplelist2tsv(_cbl, header_cbl) + with open('{}.cables.bom.tsv'.format(filename),'w') as file: + file.write(bom_cbl) + # cutlist + header_cut = ['Gauge','Gauge unit','Wire count','Shield','Length','Qty','Designators'] + bom_cut = tuplelist2tsv(_cut, header_cut) + with open('{}.cutlist.bom.tsv'.format(filename),'w') as file: + file.write(bom_cut) def bom_connectors(self): bom = [] @@ -499,7 +500,7 @@ def awg_equiv(mm2): else: return 'unknown' -def parse(file_in, file_out=None): +def parse(file_in, file_out=None, gen_bom=False): file_in = os.path.abspath(file_in) if not file_out: @@ -683,7 +684,7 @@ def parse(file_in, file_out=None): else: raise Exception('Wrong number of connection parameters') - h.output(filename=file_out, format=('png','svg'), view=False) + h.output(filename=file_out, format=('png','svg'), gen_bom=gen_bom, view=False) def tuplelist2tsv(input, header=None): output = '' @@ -701,6 +702,7 @@ if __name__ == '__main__': ap = argparse.ArgumentParser() ap.add_argument('file_input', nargs='?', default='_test/test.yml') ap.add_argument('file_output', nargs='?', default=None) + ap.add_argument('--bom', action='store_const', default=False, const=True) args = ap.parse_args() - parse(args.file_input, args.file_output) + parse(args.file_input, file_out=args.file_output, gen_bom=args.bom)