diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2019-06-03 08:46:51 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2019-06-14 08:57:12 +0200 |
commit | d203763f31428bee3edba4383d37f992b0f8e186 (patch) | |
tree | f5709efbeee38fa593bad25b8e15523478c7accc /src/ee/tools/ninja.py | |
parent | 2554f0e774be0e473d650fc206ac7668d4561412 (diff) | |
download | ee-python-d203763f31428bee3edba4383d37f992b0f8e186.tar.gz ee-python-d203763f31428bee3edba4383d37f992b0f8e186.tar.bz2 ee-python-d203763f31428bee3edba4383d37f992b0f8e186.tar.xz ee-python-d203763f31428bee3edba4383d37f992b0f8e186.zip |
ninja:
o Reading list of suppliers from Project. The project still has a
hard-coded list, but at least now there is only one list.
o Using Project.public_dir instead of "ee". Also in generated ninja
files.
o Removing part_dbs list from internal code, only use suppliers. If the
user want to have it's own internal list of parts that should become a
supplier.
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", |