diff options
Diffstat (limited to 'trygvis/eda/cli/__init__.py')
-rw-r--r-- | trygvis/eda/cli/__init__.py | 34 |
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.") |