|
|
- import json
- import pathlib as pl
-
- def load(batch_file):
- batch_file = pl.Path(batch_file).resolve()
-
- with open(batch_file, "r") as bfile:
- batch_obj = json.loads(bfile.read())
-
- batch_obj["base_path"] = batch_file.parent
-
- return __load_batch_obj(batch_obj)
-
-
- def __load_batch_obj(batch_obj):
- paths = []
-
- instance_dir = None
-
- if "dir" in batch_obj:
- instance_dir = pl.Path(batch_obj["dir"])
-
- if not instance_dir.is_absolute():
- instance_dir = pl.Path(batch_obj["base_path"], instance_dir)
- else:
- instance_dir = batch_obj["base_path"]
-
- if "instances" in batch_obj:
- for instance in batch_obj["instances"]:
- paths.append(pl.Path(instance_dir, instance))
-
- if "batches" in batch_obj:
- for batch in batch_obj["batches"]:
- batch["base_path"] = instance_dir
-
- paths.extend(__load_batch_obj(batch))
-
- if "include" in batch_obj:
- for batch_file in batch_obj["include"]:
- paths.extend(load(pl.Path(instance_dir, batch_file)))
-
- return paths
|