diff --git a/edosl0util/cli/rdrmerge.py b/edosl0util/cli/rdrmerge.py index 6e17540e53e8bfffe6072e3032130bd32f428926..89e421d818de054138e5329047a990b3175539a0 100644 --- a/edosl0util/cli/rdrmerge.py +++ b/edosl0util/cli/rdrmerge.py @@ -20,6 +20,12 @@ from .util import configure_logging LOG = logging.getLogger("edosl0util.cli.rdrmerge") +@contextmanager +def working_directory(workdir, **kwds): + os.chdir(workdir) + yield workdir + + # py2 compat @contextmanager def TemporaryDirectory(**kwds): @@ -94,15 +100,20 @@ start_of_mission = { } -def merge_rdrs(inputs, not_before=None, not_after=None): +def merge_rdrs(inputs, not_before=None, not_after=None, workdir=None): to_process = rdrs_to_process(inputs) + if workdir is not None: + workdir = working_directory(workdir) + else: + workdir = TemporaryDirectory(os.getcwd()) + # do each set of files separately to handle case where different products # are provided outputs = [] for (sat, product), rdrs in to_process.items(): LOG.info("handling %d files for %s %s", len(rdrs), sat, product) - with TemporaryDirectory(dir=os.getcwd()) as tmpdir: + with workdir as tmpdir: # extract RDRs separately, name them after RDR pds = [] for fpath in rdrs: @@ -139,7 +150,7 @@ def main(): "%Y-%m-%dT%H:%M:%SZ", "%Y-%m-%dT%H:%M:%S", "%Y-%m-%d %H:%M:%S", - "%Y-%m-%d" + "%Y-%m-%d", ]: try: return datetime.strptime(v, fmt) @@ -148,6 +159,7 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument("-v", "--verbose", action="store_true") + parser.add_argument("--workdir", help="Working directory. Not cleaned up.") parser.add_argument( "--not-before", type=timestamp, @@ -164,7 +176,7 @@ def main(): if not args.rdr: parser.exit(1, "no RDR's provided") - for o in merge_rdrs(args.rdr, not_before=args.not_before): + for o in merge_rdrs(args.rdr, not_before=args.not_before, workdir=args.workdir): LOG.info("created %s", o)