Files
adventofcode/2024/src/aoc/__main__.py
2024-12-01 15:21:55 +01:00

42 lines
868 B
Python

import datetime
import time
from typing import IO
import click
from aoc import days
@click.command()
@click.option(
"-i",
"--input",
"data",
type=click.File(mode="rt", encoding="utf8"),
default="-",
help="Problem input file",
)
@click.option(
"-t", "--time", "timing", is_flag=True, help="Print elapsed time afterwards"
)
@click.argument("day", required=True)
def main(day: int, timing: bool, data: IO[str]) -> None:
runner_class = days.get_runner(day)
contents = data.read()
start = time.perf_counter_ns()
part1, part2 = runner_class.run_both(contents)
if timing:
elapsed = time.perf_counter_ns() - start
delta = datetime.timedelta(microseconds=elapsed / 1000)
click.echo(f"Elapsed: {delta}", err=True)
click.echo(part1)
click.echo(part2)
if __name__ == "__main__":
main()