def main()

in components/processing/libs/processor-msg/src/processors/msg/run.py [0:0]


def main() -> None:
    parser = argparse.ArgumentParser(
        prog="process msgs",
        description="process and extract messages",
    )
    parser.add_argument("process_dir", type=str, help="Process folder to process")
    parser.add_argument(
        "reject_dir", type=str, help="Reject folder for files that fail"
    )
    parser.add_argument(
        "--write_json", type=bool, default=True, help="Write JSON files"
    )
    parser.add_argument(
        "-l",
        "--log",
        dest="logLevel",
        choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
        default="INFO",
        help="Set the logging level",
    )
    parser.add_argument(
        "--write_bigquery",
        type=str,
        default="",
        help="BigQuery fully qualified table to write results",
    )
    all_processors = ", ".join([x.value for x in Processors])
    parser.add_argument(
        "--file-type",
        metavar="KEY:VALUE",
        dest="supported_files",
        help="Set all supported file types in the form of "
        "FILE_TYPE:PROCESSOR. Minimum one is required. "
        "Multiple entries are possible. Supported "
        f"processors are {all_processors}",
        nargs="+",
        required=True,
        action=keyvalue,
    )

    args = parser.parse_args()

    logging.basicConfig(level=logging.getLevelName(args.logLevel))

    # Process everything
    process_all_objects(
        GCSPath(args.process_dir),
        GCSPath(args.reject_dir),
        args.supported_files,
        write_json=args.write_json,
        write_bigquery=args.write_bigquery,
    )