Add logic to run prod and test from main.py

This commit is contained in:
chris committed 2026-07-02 23:25:00 -04:00
1 parent 39c9426f71
commit f58ee13336
1 file changed
+32 -4
+32 -4
View File
@@ -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)}")