from argparse import ArgumentParser from steps import steps from steps.supervisor import Supervisor from utils.args import KeyAction from utils.key import Key from utils.lock import S3Lock def run_steps(key: Key): supervisor = Supervisor(key) # TODO: run steps from certain point? supervisor.run(steps) if __name__ == "__main__": parser = ArgumentParser() parser.add_argument( "--key", "--override-key", action=KeyAction, default=Key(), nargs=1, dest="key", required=False, metavar="ENVIRONMENT_TIMESTAMP_UUID", help="WARNING: USE ON YOUR OWN RISK! Override key to continue processing from a certain point", ) parser.add_argument( "-l", "--ignore-lock", default=False, action="store_true", dest="ignore_lock", help="WARNING: USE ON YOUR OWN RISK! Ignoring the locking mechanism", ) args = parser.parse_args() if args.ignore_lock: run_steps(args.key) else: with S3Lock(args.key): run_steps(args.key)