Source code for Hive_scripts.Hive_run_pipeline_from_file
#!/usr/bin/env python
import datetime
import subprocess
from argparse import ArgumentParser, RawTextHelpFormatter
from pathlib import Path
from textwrap import dedent
from Hive.utils.log_utils import get_logger, add_verbosity_options_to_argparser, log_lvl_from_verbosity_args, INFO
TIMESTAMP = "{:%Y-%m-%d_%H-%M-%S}".format(datetime.datetime.now())
DESC = dedent(
"""
Run pipeline steps from a TXT file.
""" # noqa: E501
)
EPILOG = dedent(
"""
Example call:
::
{filename} --file PIPELINE_FILE.txt
""".format( # noqa: E501
filename=Path(__file__).stem
)
)
[docs]def get_arg_parser():
pars = ArgumentParser(description=DESC, epilog=EPILOG, formatter_class=RawTextHelpFormatter)
pars.add_argument(
"--file",
type=str,
required=True,
help="TXT file including list of commands to run.",
)
pars.add_argument(
"--steps",
type=str,
nargs="+",
required=False,
help="Optional pipeline steps to run. When omitted, run all the steps.",
)
add_verbosity_options_to_argparser(pars)
return pars
[docs]def main():
parser = get_arg_parser()
arguments = vars(parser.parse_args())
logger = get_logger( # noqa: F841
name=Path(__file__).name,
level=log_lvl_from_verbosity_args(arguments),
)
with open(arguments["file"]) as f:
commands = f.readlines()
steps = range(len(commands))
if arguments["steps"] is not None:
steps = arguments["steps"]
steps = [int(step) for step in steps]
for it, command in enumerate(commands):
if it in steps:
logger.log(INFO, "Running Step {}: {}".format(it, command))
subprocess.call(command[:-1].split(" "))
if __name__ == "__main__":
main()