diff options
Diffstat (limited to 'src/ee/tools/ninja.py')
-rw-r--r-- | src/ee/tools/ninja.py | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/ee/tools/ninja.py b/src/ee/tools/ninja.py index a26a474..aa6952b 100644 --- a/src/ee/tools/ninja.py +++ b/src/ee/tools/ninja.py @@ -8,7 +8,18 @@ from jinja2 import Environment, PackageLoader, select_autoescape import ee.tools from ee.kicad import read_schematics -from ee.project import Project +from ee.project import Project, SupplierDescriptor + + +class NinjaSupplier(object): + def __init__(self, project: Project, supplier: SupplierDescriptor): + self.project = project + self.supplier = supplier + self.key = supplier.key + + @property + def part_db(self): + return "$public_dir/{}/parts.xml".format(self.key) def ninja_path_filter(s: Union[Path, str, List[str]]) -> str: @@ -54,16 +65,14 @@ def generate(project: Project): e.filters["noext"] = noext_filter return e - part_dbs = [] params = { "ee": "{} -m ee".format(os.path.relpath(sys.executable, Path("."))), "project": project, - "part_dbs": part_dbs, "souffle_ee_src": str(Path(__file__).parent.parent / "souffle"), "is_file": lambda p: os.path.isfile(str(p)), } - kicad_souffle_dl = project.project_dir / "ee" / "custom" / "kicad-souffle.dl" + kicad_souffle_dl = project.public_dir / "custom" / "kicad-souffle.dl" if kicad_souffle_dl.is_file(): params["kicad_souffle_dl"] = str(kicad_souffle_dl) @@ -84,9 +93,7 @@ def generate(project: Project): params["pcb"] = Path(project.cfg["kicad-project"]["pcb"]) gerber_zip = "prod/gerber.zip" - # TODO: read from config - distributors = ["digikey"] - params["distributors"] = distributors + params["suppliers"] = [NinjaSupplier(project, s) for s in project.suppliers] if gerber_zip is not None: params["gerber_zip"] = gerber_zip @@ -98,10 +105,6 @@ def generate(project: Project): parts_yaml_files = [path for path in project.project_dir.iterdir() if str(path).endswith("-parts.yaml")] params["parts_yaml_files"] = parts_yaml_files - # Local part databases first - part_dbs.extend([parent_dir_filter(p) / noext_filter(p) for p in parts_yaml_files]) - part_dbs.extend([Path("ee") / d / "parts" for d in distributors]) - if not build_ninja.exists(): with build_ninja.open("w") as f: f.writelines(["# This file was generated by eetools. Add your own rules and build commands\n", |