aboutsummaryrefslogtreecommitdiff
path: root/trygvis/eda/cli/eda_rdf.py
diff options
context:
space:
mode:
Diffstat (limited to 'trygvis/eda/cli/eda_rdf.py')
-rw-r--r--trygvis/eda/cli/eda_rdf.py157
1 files changed, 114 insertions, 43 deletions
diff --git a/trygvis/eda/cli/eda_rdf.py b/trygvis/eda/cli/eda_rdf.py
index 7bf0934..33018ec 100644
--- a/trygvis/eda/cli/eda_rdf.py
+++ b/trygvis/eda/cli/eda_rdf.py
@@ -3,44 +3,47 @@ import sys
import trygvis.eda.cli as cli
-def main():
- parser = argparse.ArgumentParser()
+class CliCommand(object):
+ def __init__(self, key, description):
+ self.key = key
+ self.description = description
+
+
+class AddToDb(CliCommand):
+ def __init__(self):
+ super().__init__("add-to-db", "Import RDF triplet file to the database")
- subparsers = parser.add_subparsers(dest="cmd")
+ def run(self, argv):
+ p = argparse.ArgumentParser(prog=self.key, description=self.description)
+ p.add_argument("files", nargs='*')
+ args = p.parse_args(argv)
- # kicad-*
- p = subparsers.add_parser("kicad-bom-to-ttl")
- p.add_argument("-o", "--output", required=False)
- p.add_argument("-i", "--input", required=False)
+ from trygvis.eda.cli import add_to_db
+ add_to_db.run(args.files, args)
- # db-*
- p = subparsers.add_parser("add-to-db")
- p.add_argument("-d", "--db", required=True)
- p.add_argument("files", nargs='*')
- p = subparsers.add_parser("db-stats")
- p.add_argument("-d", "--db", required=True)
+class DbStats(CliCommand):
+ def __init__(self):
+ super().__init__("db-stats", "Show some statistics about the data in the database")
- # digikey-*
- p = subparsers.add_parser("digikey-download-for-schematic")
- p.add_argument("-d", "--db", required=True)
- p.add_argument("--schematic", required=True)
+ def run(self, argv):
+ p = argparse.ArgumentParser(prog=self.key, description=self.description)
+ args = p.parse_args(argv)
- p = subparsers.add_parser("digikey-download-attribute-types-for-category")
- p.add_argument("-c", "--category", required=True)
- p.add_argument("-s", "--sub-category", required=True)
- p.add_argument("-o", "--output", required=False)
+ from trygvis.eda.cli import db_stats
+ db_stats.run()
- # Other
- p = subparsers.add_parser("make-bom")
- p.add_argument("-d", "--db", required=True)
- p.add_argument("--schematic", required=True)
- args = parser.parse_args()
+class KicadBomToTtl(CliCommand):
+ def __init__(self):
+ super().__init__("kicad-bom-to-ttl", "Create RDF triples from a KiCAD BOM.xml file")
- cli.init()
+ def run(self, argv):
+ p = argparse.ArgumentParser(prog=self.key, description=self.description)
+ p.add_argument("-o", "--output", required=False)
+ p.add_argument("-i", "--input", required=False)
+ args = p.parse_args(argv)
- if args.cmd == "kicad-bom-to-ttl":
from trygvis.eda.cli import kicad_bom_to_ttl
if args.input is not None:
@@ -56,24 +59,92 @@ def main():
with src, dst:
kicad_bom_to_ttl.run(src, dst, args)
- elif args.cmd == "add-to-db":
- from trygvis.eda.cli import add_to_db
-
- add_to_db.run(args.files, args.db, args)
- elif args.cmd == "db-stats":
- from trygvis.eda.cli import db_stats
- db_stats.run(args.db)
+class DigikeyDownloadForSchematic(CliCommand):
+ def __init__(self):
+ super().__init__("digikey-download-for-schematic", "Download missing data from digikey.com")
- elif args.cmd == "make-bom":
- from trygvis.eda.cli import make_bom
- make_bom.run(args.schematic, args.db)
+ def run(self, argv):
+ p = argparse.ArgumentParser(prog=self.key, description=self.description)
+ p.add_argument("--schematic", required=True)
+ args = p.parse_args(argv)
- elif args.cmd == "digikey-download-for-schematic":
from trygvis.eda.cli import digikey_download_for_schematic
- digikey_download_for_schematic.run(args.schematic, args.db, args)
- elif args.cmd == "digikey-download-attribute-types-for-category":
+ digikey_download_for_schematic.run(args.schematic, args)
+
+
+class DigikeyDownloadAttributeTypesForCategory(CliCommand):
+ def __init__(self):
+ super().__init__("digikey-download-attribute-types-for-category", "Download the attribute types for a category from digikey.com")
+
+ def run(self, argv):
+ p = argparse.ArgumentParser(prog=self.key, description=self.description)
+ p.add_argument("-c", "--category", required=True)
+ p.add_argument("-s", "--sub-category", required=True)
+ p.add_argument("-o", "--output", required=False)
+ args = p.parse_args(argv)
+
from trygvis.eda.cli import digikey_download_attribute_types_for_category
digikey_download_attribute_types_for_category.run(args.category, args.sub_category, args.output, args)
- else:
- sys.exit("Unknown command: %s" % args.cmd)
+
+class MakeBom(CliCommand):
+ def __init__(self):
+ super().__init__("make-bom", "Create a BOM for a project with all info for each part.")
+
+ def run(self, argv):
+ p = argparse.ArgumentParser(prog=self.key, description=self.description)
+ p.add_argument("--schematic", required=True)
+ args = p.parse_args(argv)
+
+ from trygvis.eda.cli import make_bom
+ make_bom.run(args.schematic)
+
+
+class Init(CliCommand):
+ def __init__(self):
+ super().__init__("init", "Initialize a EDA-RFD database")
+
+ def run(self, argv):
+ p = argparse.ArgumentParser(prog=self.key, description=self.description)
+ p.add_argument("--database-url", dest="database_url")
+ args = p.parse_args(argv)
+
+ from trygvis.eda.cli import init
+ init.run(args)
+
+
+def main():
+ cli.initialize()
+
+ commands = [
+ AddToDb(),
+ Init(),
+ DbStats(),
+ MakeBom(),
+ KicadBomToTtl(),
+ DigikeyDownloadForSchematic(),
+ DigikeyDownloadAttributeTypesForCategory(),
+ ]
+
+ parser = argparse.ArgumentParser(
+ description='EDA RFD tools',
+ usage="""eda-rdf <command> [<args>]
+
+Available commands
+
+""" + "\n".join([" %-50s %s" % (cmd.key, cmd.description) for cmd in commands]))
+ parser.add_argument('command', help='Subcommand to run', nargs='?')
+ args = parser.parse_args(sys.argv[1:2])
+ cmd_args = sys.argv[2:]
+
+ if args.command is None:
+ print(parser.usage)
+ print()
+ sys.exit(1)
+
+ for cmd in commands:
+ if cmd.key == args.command:
+ cmd.run(cmd_args)
+ return
+
+ print("Unknown command: %s" % args.command)