aboutsummaryrefslogtreecommitdiff
path: root/trygvis/eda/cli/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'trygvis/eda/cli/__init__.py')
-rw-r--r--trygvis/eda/cli/__init__.py53
1 files changed, 40 insertions, 13 deletions
diff --git a/trygvis/eda/cli/__init__.py b/trygvis/eda/cli/__init__.py
index 8a4ce6f..f300f86 100644
--- a/trygvis/eda/cli/__init__.py
+++ b/trygvis/eda/cli/__init__.py
@@ -1,8 +1,9 @@
import sys
import logging
-
from rdflib import store, ConjunctiveGraph, Graph, RDF, RDFS
from rdflib.plugins.sparql import prepareQuery
+import rdflib.plugins.stores.sparqlstore as sparqlstore
+import configparser
from ..digikey import rdf as digikey_rdf
from ..kicad import rdf as kicad_rdf
@@ -12,7 +13,7 @@ class CliException(Exception):
pass
-def init():
+def initialize():
logging.basicConfig(level=logging.DEBUG)
pass
@@ -27,16 +28,27 @@ def do_exit(msg=None):
sys.exit(msg)
-def with_database(path, tx):
- g = ConjunctiveGraph('Sleepycat')
- rt = g.open(path, create=False)
- if rt == store.NO_STORE:
- info("Creating store in %s" % path)
- g.open(path, create=True)
- elif rt != store.VALID_STORE:
- raise CliException("The database is corrupt: %s" % path)
+def with_database(tx):
+ config = read_config()
+
+ db_type = config['db']['type']
+ if db_type is None or db_type == 'local':
+ path = ".eda-rdf/db"
+ g = ConjunctiveGraph('Sleepycat')
+ rt = g.open(path, create=False)
+ if rt == store.NO_STORE:
+ info("Creating store in %s" % path)
+ g.open(path, create=True)
+ elif rt != store.VALID_STORE:
+ raise CliException("The database is corrupt: %s" % path)
+ elif db_type == 'sparql':
+ g = sparqlstore.SPARQLStore()
+ g.open(config["db"]["url"])
+ else:
+ raise CliException("Unknown db.type: %s" % db_type)
try:
+ print("g=%s" % g)
tx(g)
finally:
g.close()
@@ -70,7 +82,22 @@ _initNs = {
"kicad-type": kicad_rdf.KICAD_TYPE}
-def sparql(g, query, init_bindings=None):
- q = prepareQuery(query, initNs=_initNs)
+def sparql(g: Graph, query: str, init_bindings=None):
+
+ if isinstance(g, sparqlstore.SPARQLStore):
+ return g.query(query, initNs=_initNs, initBindings=init_bindings)
+ else:
+ q = prepareQuery(query, initNs=_initNs)
+ return g.query(q, initBindings=init_bindings)
+
+
+def write_config(config: configparser.ConfigParser):
+ with open('.eda-rdf/config.ini', 'w') as configfile:
+ config.write(configfile)
+
- return g.query(q, initBindings=init_bindings)
+def read_config():
+ with open('.eda-rdf/config.ini', 'r') as f:
+ config = configparser.ConfigParser()
+ config.read_file(f)
+ return config