diff --git a/main.py b/main.py index 6d6a203..e422f2a 100644 --- a/main.py +++ b/main.py @@ -1,11 +1,27 @@ import argparse +import importlib +import pathlib +import pytest + +import util.reader as reader FIRST_EVENT = 2015 LAST_EVENT = 2015 -def main(day: int, event: int, test: bool = False) -> str: - print("Called main...") - return f"Day {day} of event {event} processing [Test: {test}]" +def main(day: int, event: int, part: int, output_format: str, test: bool = False) -> str: + if test: + pytest_args = [f"tests/{event}/test_day{day}.py"] + exit_code = pytest.main(pytest_args) + return f"Pytest exited with code {exit_code}" + else: + solution = importlib.import_module(f"solution.ev{event}") + data_path = pathlib.Path(f"input/{event}/Day{day}") + data = reader.parse_datafile(data_file=data_path, output_format=output_format) + func_name = f"{day}" + if func_name in solution.function_map: + return solution.function_map[func_name](data=data, part=part) + else: + return f"Function {func_name} not found" if __name__ == "__main__": @@ -26,6 +42,18 @@ if __name__ == "__main__": type=int, choices=range(FIRST_EVENT, LAST_EVENT + 1) ) + parser.add_argument( + "-f", + "--format", + type=str, + choices=['string', 'list', 'int_list'], + default='string', + required=False, + ) args = parser.parse_args() - print(main(day=args.day, event=args.event, test=args.test)) + if not args.test: + print(f"Part 1: {main(day=args.day, event=args.event, part=1, output_format=args.format, test=args.test)}") + print(f"Part 2: {main(day=args.day, event=args.event, part=2, output_format=args.format, test=args.test)}") + else: + print(f"{main(day=args.day, event=args.event, part=0, output_format=args.format, test=args.test)}")