import argparse import os from tqdm import tqdm from mini_queue.utils.minio import MinioHandle def parse_args(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(help="sub-command help", dest="command") parser_add = subparsers.add_parser("add", help="Add file(s) to the MinIO store") parser_add.add_argument("dossier_id") add_group = parser_add.add_mutually_exclusive_group(required=True) add_group.add_argument("--file", "-f") add_group.add_argument("--directory", "-d") parser_remove = subparsers.add_parser("remove", help="Remove a file from the MinIO store") parser_remove.add_argument("dossier_id") parser_remove.add_argument("file_path") subparsers.add_parser("purge", help="Delete all files and buckets in the MinIO store") args = parser.parse_args() return args if __name__ == "__main__": client = MinioHandle() args = parse_args() if args.command == "add": if args.file: client.add_file_compressed(args.file, folder=args.dossier_id) elif args.directory: for fname in tqdm([*os.listdir(args.directory)], desc="Adding files"): path = os.path.join(args.directory, fname) client.add_file_compressed(path, folder=args.dossier_id) elif args.command == "remove": fname = os.path.basename(args.file_path) client.remove_file(folder=args.dossier_id, filename=fname) elif args.command == "purge": client.purge()