import os import typing import argparse from src.Config import Config from src.Stdout import Stdout from src.Upload.Aws import Aws from src.Archive.Archive import Archive from src.Enums import StdoutLevel, Namespace stdout = Stdout(Namespace.CLI) def main() -> None: """ Autorun from a config file Args: file (str): Path to the config file to load """ parser = argparse.ArgumentParser(description="Testing") parser.add_argument("-s", "--sleep", type=int, help="Global log sleep level") parser.add_argument("-i", "--input", help="Load config file from path",default=".config.json") parser.add_argument("-d", "--dryrun", action="store_true", help="Dry run") parser.add_argument("-l", "--log-level", type=str, help="Global log level") args = parser.parse_args() # Set custom global sleep level if args.sleep: Stdout.global_sleep = args.sleep stdout.ok(f"Setting global log sleep level to: {Stdout.global_sleep} second(s)") # Set custom global log level if args.log_level: try: Stdout.global_level = StdoutLevel[args.log_level.upper()] stdout.ok(f"Setting global log level to: {Stdout.global_level}") except KeyError: raise ValueError(f"{args.log_level} is not a valid StdoutLevel") # Set enable dry run if args.dryrun: Aws.dry_run = True Archive.preserve_archives = True stdout.ok("Dry run enabled") stdout.log("Starting...") if not os.path.isfile(args.input): stdout.error(f"No config file found at path: '{args.input}'") exit(1) for item in Config.from_json_file(args.input): Aws(Archive(item)).upload() stdout.log("Finished!") if __name__ == "__main__": main()