def main()

in jobs/webcompat-kb/webcompat_kb/main.py [0:0]


def main() -> None:
    logging.basicConfig()

    parser = get_parser()
    args = parser.parse_args()
    failed = []
    try:
        logging.getLogger().setLevel(
            logging.getLevelNamesMapping()[args.log_level.upper()]
        )
        set_default_args(parser, args)

        jobs = {job_name: ALL_JOBS[job_name]() for job_name in args.jobs}

        for job_name, job in jobs.items():
            job.set_default_args(parser, args)

        client = get_client(args.bq_project_id)

        for job_name, job in jobs.items():
            logging.info(f"Running job {job_name}")
            bq_client = BigQuery(client, job.default_dataset(args), args.write)

            try:
                job.main(bq_client, args)
            except Exception as e:
                if args.pdb:
                    raise
                failed.append(job_name)
                logging.error(e)
    except Exception:
        if args.pdb:
            import pdb
            import traceback

            traceback.print_exc()
            pdb.post_mortem()
        else:
            raise

    if failed:
        logging.error(f"{len(failed)} jobs failed: {', '.join(failed)}")
        sys.exit(1)