aboutsummaryrefslogtreecommitdiff
path: root/src/ee/tools/part_find_requirements.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ee/tools/part_find_requirements.py')
-rw-r--r--src/ee/tools/part_find_requirements.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/ee/tools/part_find_requirements.py b/src/ee/tools/part_find_requirements.py
new file mode 100644
index 0000000..032db02
--- /dev/null
+++ b/src/ee/tools/part_find_requirements.py
@@ -0,0 +1,39 @@
+import argparse
+from pathlib import Path
+
+from ee.part import requirement, Part, PartDb, load_db, save_db
+
+
+def work(in_path: Path, out_path: Path):
+ in_parts = load_db(in_path)
+
+ with out_path.open("w") as f:
+ print("<root>", file=f)
+ for xml in in_parts.iterparts():
+ part = Part(xml)
+
+ analysis = requirement.analyze_requirements(part)
+
+ print("Part: {}. Found {} requirements".format(analysis.part.printable_reference,
+ len(analysis.requirements)), file=f)
+
+ for r in analysis.requirements:
+ print(" {}".format(r), file=f)
+
+ print("</root>", file=f)
+
+
+parser = argparse.ArgumentParser()
+
+parser.add_argument("--in",
+ dest="in_path",
+ required=True,
+ metavar="PART DB")
+
+parser.add_argument("--out",
+ required=True,
+ metavar="REQUIREMENTS")
+
+args = parser.parse_args()
+
+work(Path(args.in_path), Path(args.out))