diff --git a/.gitignore b/.gitignore index 1f0be4a..5a5f3e6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ __pycache__/ *.egg-info/ _version.py +.DS_Store + diff --git a/stormworkflow/main.py b/stormworkflow/main.py index 4b4c029..4c2da3b 100644 --- a/stormworkflow/main.py +++ b/stormworkflow/main.py @@ -6,6 +6,7 @@ from importlib.resources import files from argparse import ArgumentParser from pathlib import Path +import sys import yaml from packaging.version import Version @@ -134,6 +135,25 @@ def main(): wf = scripts.joinpath('workflow.sh') + # Check output directory is writeable and exists + output_dir = conf['RUN_OUT'] + if not output_dir: + _logger.error(f"Output directory {output_dir} is not defined in configuration") + + # convert to absolute path + output_dir = os.path.abspath(output_dir) + try: + os.makedirs(output_dir,exist_ok=True) + except Exception as e: + _logger.error(f"Can not create output directory {output_dir}: {e}") + sys.exit(1) + if not os.access(output_dir,os.W_OK): + _logger.error(f"Output directory {output_dir} is not writeable") + sys.exit(1) + + # update configurations with absolute path + conf['RUN_OUT'] = output_dir + run_env = os.environ.copy() run_env['L_SCRIPT_DIR'] = slurm.joinpath('.') for k, v in conf.items():