diff --git a/prjxray/db.py b/prjxray/db.py index 4f5b8579..200bf0a0 100644 --- a/prjxray/db.py +++ b/prjxray/db.py @@ -25,15 +25,14 @@ def get_available_databases(prjxray_root): class Database(object): - def __init__(self, db_root=None): + def __init__(self, db_root): """ Create project x-ray Database at given db_root. db_root: Path to directory containing settings.sh, *.db, tilegrid.json and tileconn.json """ - self.db_root = db_root or os.path.join( - os.getenv("XRAY_DATABASE_DIR"), os.getenv("XRAY_DATABASE")) + self.db_root = db_root self.tilegrid = None self.tileconn = None self.tile_types = None diff --git a/utils/segprint.py b/utils/segprint.py index a4c3edf4..2c7caea5 100755 --- a/utils/segprint.py +++ b/utils/segprint.py @@ -198,9 +198,8 @@ def mk_segments(tiles): return segments -def mk_grid(): - with open("%s/%s/tilegrid.json" % (os.getenv("XRAY_DATABASE_DIR"), - os.getenv("XRAY_DATABASE")), "r") as f: +def mk_grid(db_root): + with open(os.path.join(db_root, "tilegrid.json"), "r") as f: tiles = json.load(f) '''Load tilegrid, flattening all blocks into one dictionary''' # TODO: Migrate to new tilegrid format via library. @@ -224,6 +223,7 @@ def tile_segnames(tiles): def run( + db_root, bits_file, segnames, omit_empty_segs=False, @@ -231,8 +231,8 @@ def run( flag_decode_emit=False, flag_decode_omit=False, verbose=False): - tiles, segments = mk_grid() - db = prjxraydb.Database() + tiles, segments = mk_grid(db_root) + db = prjxraydb.Database(db_root) bitdata = bitstream.load_bitdata2(open(bits_file, "r")) @@ -271,6 +271,16 @@ def main(): parser = argparse.ArgumentParser( 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( '-z', @@ -293,8 +303,8 @@ def main(): args = parser.parse_args() run( - args.bits_file, args.segnames, args.z, args.b, args.d, args.D, - args.verbose) + args.db_root, args.bits_file, args.segnames, args.z, args.b, args.d, + args.D, args.verbose) if __name__ == '__main__':