From 831485bd027eb288f52a16f2078b232553758d3c Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Mon, 16 Jul 2018 13:23:36 +0200 Subject: wip --- src/ee/kicad/doit.py | 53 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 13 deletions(-) (limited to 'src/ee/kicad') diff --git a/src/ee/kicad/doit.py b/src/ee/kicad/doit.py index a1405d4..cc9936c 100644 --- a/src/ee/kicad/doit.py +++ b/src/ee/kicad/doit.py @@ -9,7 +9,8 @@ class KicadDoitTasks(object): "kicad_pcb": None, "gerber_dir": None, "gerber_zip": None, - "sch_object_set_dir": None, + "kicad_sch_object_set_dir": None, + "component_object_set_dir": None, }) def __init__(self, *args, **kwargs): @@ -57,14 +58,19 @@ class KicadDoitTasks(object): "file_dep": [kicad_pcb], }) - sch_object_set_dir = self.config["sch_object_set_dir"] - if sch and sch_object_set_dir: - tasks.append(task_create_kicad_sch_objects(sch, sch_object_set_dir)) + kicad_sch_object_set_dir = self.config["kicad_sch_object_set_dir"] + component_object_set_dir = self.config["component_object_set_dir"] + + if sch and kicad_sch_object_set_dir: + tasks.append(task_create_kicad_sch_objects(sch, kicad_sch_object_set_dir)) + + if kicad_sch_object_set_dir and component_object_set_dir: + tasks.append(task_kicad_sch_to_component_object(kicad_sch_object_set_dir, component_object_set_dir)) for t in tasks: yield t -def task_create_kicad_sch_objects(sch, object_set_dir): +def task_create_kicad_sch_objects(sch, os_dir, name="create-kicad-sch-objects"): def action(): import ee.kicad from ee.kicad.model import Component, ComponentField @@ -74,10 +80,10 @@ def task_create_kicad_sch_objects(sch, object_set_dir): schematics = ee.kicad.read_schematics(sch) cs = [c for c in schematics.components] - os.makedirs(object_set_dir, exist_ok=True) + os.makedirs(os_dir, exist_ok=True) # TODO: remove directory? oset = fact.ObjectSet() - oset.read(object_set_dir) + oset.read(os_dir) for c in cs: o = oset.create_object(c.timestamp) o.set("ref", c.ref) @@ -92,13 +98,34 @@ def task_create_kicad_sch_objects(sch, object_set_dir): if f.value and f.name not in ComponentField.names: o.set(f.name, str(f.value)) - oset.write(object_set_dir) + oset.write(os_dir) - component_files_cookie = "{}/kicad-sch.cookie".format(object_set_dir) - gen_cookie = "date > %(targets)s" return { - "name": "create-kicad-sch-objects", + "name": name, "file_dep": [sch], - "actions": [action, gen_cookie], - "targets": [component_files_cookie], + "actions": [action], + "targets": [os.path.join(os_dir, "object-set.ini")], + } + +def task_kicad_sch_to_component_object(kicad_sch_os_dir, component_os_dir, name="kicad-sch-to-component-object"): + def action(): + import ee.fact as fact + + kicad_sch_os = fact.ObjectSet() + kicad_sch_os.read(kicad_sch_os_dir) + + os.makedirs(component_os_dir, exist_ok=True) + component_os = fact.ObjectSet() + component_os.read(component_os_dir) + + for o in kicad_sch_os.items(): + print("processing {}".format(o.key)) + + component_os.write(component_os_dir) + + return { + "name": name, + "file_dep": [os.path.join(kicad_sch_os_dir, "object-set.ini")], + "actions": [action], + "targets": [os.path.join(component_os_dir, "object-set.ini")], } -- cgit v1.2.3