From 067cd0ef6a7e031ea839c7d118da002267df95b3 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Thu, 19 Jul 2018 23:00:13 +0200 Subject: wip. --- src/ee/kicad/doit.py | 56 ++++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 26 deletions(-) (limited to 'src/ee/kicad') diff --git a/src/ee/kicad/doit.py b/src/ee/kicad/doit.py index fcbcaef..29438ad 100644 --- a/src/ee/kicad/doit.py +++ b/src/ee/kicad/doit.py @@ -1,6 +1,5 @@ import logging import os.path -from typing import List from configclass import Config @@ -21,8 +20,12 @@ class KicadDoitTasks(object): def __init__(self, *args, **kwargs): self.config = self.config.make(kwargs) - def echo(*args, **kwargs): - logger.info("_task: args={}, kwars={}".format(args, kwargs)) + formatter = logging.Formatter("%(levelname)s: %(message)s") + ch = logging.StreamHandler() + ch.setFormatter(formatter) + logger.addHandler(ch) + + logger.setLevel(logging.DEBUG) def tasks(self, *args, **kwargs): kicad_pcb = self.config["kicad_pcb"] @@ -36,27 +39,23 @@ class KicadDoitTasks(object): if kicad_pcb and gerber_dir: tasks.append(task_kicad_gerber(kicad_pcb, gerber_dir, gerber_zip)) - sch_ds = task_kicad_sch_to_data_set(dsm, sch, - in_data_sets=[], - out_data_set="kicad-sch-data-set") \ + sch_ds = task_kicad_sch_to_data_set(dsm, sch) \ if sch else None - component_ds = task_kicad_create_component_data_set(dsm, - in_data_sets=sch_ds["targets"], - out_data_set="raw-component") \ - if sch_ds else None - - pcb_ds = task_kicad_pcb_to_data_set(dsm, kicad_pcb, in_data_sets=[], out_data_set="kicad-pcb") \ + pcb_ds = task_kicad_pcb_to_data_set(dsm, kicad_pcb) \ if kicad_pcb else None - tasks = [sch_ds, component_ds, pcb_ds] - return (t for t in tasks if t) + component_ds = task_kicad_create_component_data_set(dsm) \ + if sch_ds else None + + tasks = [component_ds, sch_ds, pcb_ds,] + return tasks def task_kicad_gerber(kicad_pcb: str, gerber_dir: str, gerber_zip: str, name="kicad-gerber"): import ee.kicad - gerber_zip = len(gerber_zip) or "{}.zip".format(gerber_dir) + gerber_zip = gerber_zip or "{}.zip".format(gerber_dir) # logger.info("gerber_zip={}".format(gerber_zip)) eg = next((p for p in (os.path.join(p, "export_gerber.py") for p in ee.kicad.__path__) if os.path.isfile(p)), None) @@ -89,8 +88,10 @@ def task_kicad_gerber(kicad_pcb: str, gerber_dir: str, gerber_zip: str, name="ki } -def task_kicad_sch_to_data_set(dsm: DataSetManager, sch, in_data_sets: List[str], out_data_set, - name="kicad-sch-to-data-set"): +def task_kicad_sch_to_data_set(dsm: DataSetManager, sch, name="kicad-sch-to-data-set"): + out_data_set = "kicad-sch" + in_data_sets = [] + def action(): import ee.kicad from ee.kicad.model import ComponentField @@ -119,21 +120,22 @@ def task_kicad_sch_to_data_set(dsm: DataSetManager, sch, in_data_sets: List[str] } -def task_kicad_pcb_to_data_set(dsm: DataSetManager, pcb_path, in_data_sets: List[str], out_data_set, - name="kicad-pcb-to-data-set"): +def task_kicad_pcb_to_data_set(dsm: DataSetManager, pcb_path, name="kicad-pcb-to-data-set"): + out_data_set = "kicad-pcb" + in_data_sets = [] + def action(): import ee.kicad.pcb from ee.kicad.pcb import FpText + logger.debug("Parsing PCB {}".format(pcb_path)) + with dsm.create_rw(out_data_set, inputs=in_data_sets) as ds: # [ds.delete(o) for o in ds.items(object_type="kicad-pcb-component")] pcb: ee.kicad.pcb.KicadPcb = ee.kicad.pcb.parse(pcb_path) for _m in pcb.modules: m: ee.kicad.pcb.Module = _m - logger.info("attrs") - for s in dir(m): - logger.info(s) o = ds.get_object("kicad-pcb-component", m.tstamp) @@ -154,10 +156,12 @@ def task_kicad_pcb_to_data_set(dsm: DataSetManager, pcb_path, in_data_sets: List } -def task_kicad_create_component_data_set(dsm: DataSetManager, in_data_sets: List[str], out_data_set, - name="kicad-create-component-data-set"): - def action(*args, **kwargs): - logger.info("args={}, kwargs={}".format(args, kwargs)) +def task_kicad_create_component_data_set(dsm: DataSetManager, name="kicad-create-component-data-set"): + out_data_set = "components" + in_data_sets = ["kicad-sch", "kicad-pcb"] + + def action(targets, *args, **kwargs): + logger.info("targets={}, args={}, kwargs={}".format(targets, args, kwargs)) with dsm.create_rw(out_data_set, inputs=in_data_sets) as ds: items = ds.items() -- cgit v1.2.3