aboutsummaryrefslogtreecommitdiff
path: root/src/ee/tools/ninja.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ee/tools/ninja.py')
-rw-r--r--src/ee/tools/ninja.py25
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",