Pass configuration from top of utility, rather than implicit variables.

Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
Keith Rothman 2018-11-01 16:16:13 -07:00
parent 7f4ea57a87
commit de5c8a44a3
2 changed files with 19 additions and 10 deletions

View File

@ -25,15 +25,14 @@ def get_available_databases(prjxray_root):
class Database(object): class Database(object):
def __init__(self, db_root=None): def __init__(self, db_root):
""" Create project x-ray Database at given db_root. """ Create project x-ray Database at given db_root.
db_root: Path to directory containing settings.sh, *.db, tilegrid.json and db_root: Path to directory containing settings.sh, *.db, tilegrid.json and
tileconn.json tileconn.json
""" """
self.db_root = db_root or os.path.join( self.db_root = db_root
os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE"))
self.tilegrid = None self.tilegrid = None
self.tileconn = None self.tileconn = None
self.tile_types = None self.tile_types = None

View File

@ -198,9 +198,8 @@ def mk_segments(tiles):
return segments return segments
def mk_grid(): def mk_grid(db_root):
with open("%s/%s/tilegrid.json" % (os.getenv("XRAY_DATABASE_DIR"), with open(os.path.join(db_root, "tilegrid.json"), "r") as f:
os.getenv("XRAY_DATABASE")), "r") as f:
tiles = json.load(f) tiles = json.load(f)
'''Load tilegrid, flattening all blocks into one dictionary''' '''Load tilegrid, flattening all blocks into one dictionary'''
# TODO: Migrate to new tilegrid format via library. # TODO: Migrate to new tilegrid format via library.
@ -224,6 +223,7 @@ def tile_segnames(tiles):
def run( def run(
db_root,
bits_file, bits_file,
segnames, segnames,
omit_empty_segs=False, omit_empty_segs=False,
@ -231,8 +231,8 @@ def run(
flag_decode_emit=False, flag_decode_emit=False,
flag_decode_omit=False, flag_decode_omit=False,
verbose=False): verbose=False):
tiles, segments = mk_grid() tiles, segments = mk_grid(db_root)
db = prjxraydb.Database() db = prjxraydb.Database(db_root)
bitdata = bitstream.load_bitdata2(open(bits_file, "r")) bitdata = bitstream.load_bitdata2(open(bits_file, "r"))
@ -271,6 +271,16 @@ def main():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description='XXX: does not print all data?') description='XXX: does not print all data?')
database_dir = os.getenv("XRAY_DATABASE_DIR")
database = os.getenv("XRAY_DATABASE")
db_root_kwargs = {}
if database_dir is None or database is None:
db_root_kwargs['required'] = True
else:
db_root_kwargs['required'] = False
db_root_kwargs['default'] = os.path.join(database_dir, database)
parser.add_argument('--db_root', help="Database root.", **db_root_kwargs)
parser.add_argument('--verbose', action='store_true', help='') parser.add_argument('--verbose', action='store_true', help='')
parser.add_argument( parser.add_argument(
'-z', '-z',
@ -293,8 +303,8 @@ def main():
args = parser.parse_args() args = parser.parse_args()
run( run(
args.bits_file, args.segnames, args.z, args.b, args.d, args.D, args.db_root, args.bits_file, args.segnames, args.z, args.b, args.d,
args.verbose) args.D, args.verbose)
if __name__ == '__main__': if __name__ == '__main__':