aboutsummaryrefslogtreecommitdiff
path: root/trygvis/eda/cli/__init__.py
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2016-12-28 14:08:52 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2016-12-28 14:08:52 +0100
commit117431b9511be07db8ce53526dbb985b5fad00a2 (patch)
treeabd48f2fec45184c45995d163fc7940cfeb4d423 /trygvis/eda/cli/__init__.py
parentde8665b0b05db10c3257f9c645a09638a4732256 (diff)
downloadeda-rdf-117431b9511be07db8ce53526dbb985b5fad00a2.tar.gz
eda-rdf-117431b9511be07db8ce53526dbb985b5fad00a2.tar.bz2
eda-rdf-117431b9511be07db8ce53526dbb985b5fad00a2.tar.xz
eda-rdf-117431b9511be07db8ce53526dbb985b5fad00a2.zip
o Adding 'digikey-download-metadata' tool that downloads everything from Digi-Key. Should support writing directly to database.
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.")