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__.py34
1 files changed, 29 insertions, 5 deletions
diff --git a/trygvis/eda/cli/__init__.py b/trygvis/eda/cli/__init__.py
index f300f86..8050d6d 100644
--- a/trygvis/eda/cli/__init__.py
+++ b/trygvis/eda/cli/__init__.py
@@ -1,5 +1,7 @@
import sys
import logging
+from genericpath import isfile
+
from rdflib import store, ConjunctiveGraph, Graph, RDF, RDFS
from rdflib.plugins.sparql import prepareQuery
import rdflib.plugins.stores.sparqlstore as sparqlstore
@@ -70,6 +72,26 @@ def create_graph(digikey=False, kicad=False):
return g
+def write_graph(gen_g, filename: str = None, force_write: bool = False):
+ if filename is not None:
+ if force_write or not isfile(filename):
+ g = gen_g()
+
+ if g is None:
+ raise CliException("internal error: graph generator returned None")
+
+ bs = g.serialize(encoding='utf-8', format='turtle')
+ with open(filename, "wb") as f:
+ f.write(bs)
+ info("Wrote %s" % filename)
+ else:
+ info("Skipped writing %s, already exists" % filename)
+ else:
+ g = gen_g()
+ bs = g.serialize(encoding='utf-8', format='turtle')
+ sys.stdout.buffer.write(bs)
+
+
_initNs = {
"rdf": RDF,
"rdfs": RDFS,
@@ -83,7 +105,6 @@ _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:
@@ -97,7 +118,10 @@ def write_config(config: configparser.ConfigParser):
def read_config():
- with open('.eda-rdf/config.ini', 'r') as f:
- config = configparser.ConfigParser()
- config.read_file(f)
- return config
+ try:
+ with open('.eda-rdf/config.ini', 'r') as f:
+ config = configparser.ConfigParser()
+ config.read_file(f)
+ return config
+ except FileNotFoundError:
+ raise CliException("Not a EDA-RDF project. Run eda-rdf init first.")