#!/usr/bin/env python3 import argparse import aoclib import importlib import os argument_parser = argparse.ArgumentParser() argument_parser.add_argument("-d", "--day", help="specify day to process; leave empty for ALL days", type=int) argument_parser.add_argument("-t", "--test", help="run test cases", action="store_true", default=False) argument_parser.add_argument("-p", "--part", help="run only part x", choices=[1, 2], type=int) flags = argument_parser.parse_args() import_day = "" if flags.day: import_day = "%02d" % flags.day imported = [] for _, _, files in os.walk(aoclib.BASE_PATH): for f in files: if f.startswith('day' + import_day) and f.endswith('.py'): lib_name = f[:-3] globals()[lib_name] = importlib.import_module(lib_name) imported.append(lib_name) break for lib in sorted(imported): day = int(lib[-2:]) if flags.part: aoclib.printSolution( day=day, part=flags.part, solution=getattr(globals()[lib], "part%d" % flags.part)(test_mode=flags.test), test=flags.test ) else: aoclib.printSolution(day, 1, globals()[lib].part1(test_mode=flags.test), test=flags.test) aoclib.printSolution(day, 2, globals()[lib].part2(test_mode=flags.test), test=flags.test)