import sys import logging from rdflib import ConjunctiveGraph from rdflib import Graph from rdflib import store from ..digikey import rdf as digikey_rdf from ..kicad import rdf as kicad_rdf class CliException(Exception): pass def init(): logging.basicConfig(level=logging.DEBUG) pass def info(msg=None): if msg is not None: sys.stderr.write(msg) sys.stderr.write("\n") def exit(msg=None): sys.exit(msg) def open_database(path): 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) return g def create_graph(digikey=False, kicad=False): g = Graph() if digikey: g.bind("dk", digikey_rdf.DIGIKEY) g.bind("dk-part", digikey_rdf.DIGIKEY_PART) g.bind("dk-attr-type", digikey_rdf.DIGIKEY_ATTRIBUTE_TYPE) g.bind("dk-attr-value", digikey_rdf.DIGIKEY_ATTRIBUTE_VALUE) g.bind("dk-product-category", digikey_rdf.DIGIKEY_PRODUCT_CATEGORY) if kicad: g.bind("kicad", kicad_rdf.KICAD) g.bind("kicad-type", kicad_rdf.KICAD_TYPE) return g