wip
This commit is contained in:
71
aoc/cli.py
Normal file
71
aoc/cli.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import argparse
|
||||
import datetime
|
||||
|
||||
|
||||
def get_latest_event_year() -> int:
|
||||
now = datetime.datetime.now()
|
||||
year = now.year
|
||||
|
||||
if now.month < 12:
|
||||
year -= 1
|
||||
|
||||
return year
|
||||
|
||||
|
||||
def argument_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(description="aoc")
|
||||
|
||||
subcli = parser.add_subparsers(title="command", required=True, dest="command")
|
||||
|
||||
solve = subcli.add_parser("solve", help="solve a given day's puzzle")
|
||||
solve.add_argument(
|
||||
"-e",
|
||||
"--example",
|
||||
action="store_true",
|
||||
required=False,
|
||||
help="use example input file instead of real input file",
|
||||
)
|
||||
solve.add_argument(
|
||||
"-y",
|
||||
"--year",
|
||||
type=int,
|
||||
required=False,
|
||||
help="year of the puzzle (default: current year)",
|
||||
default=get_latest_event_year(),
|
||||
)
|
||||
solve.add_argument("day", type=int, help="day of the puzzle (1-25)")
|
||||
|
||||
create = subcli.add_parser(
|
||||
"create", help="create template and input files for a given day's puzzle"
|
||||
)
|
||||
create.add_argument(
|
||||
"-y",
|
||||
"--year",
|
||||
type=int,
|
||||
required=False,
|
||||
help="year of the puzzle (default: current year)",
|
||||
default=get_latest_event_year(),
|
||||
)
|
||||
create.add_argument("day", type=int, help="day of the puzzle (1-25)")
|
||||
|
||||
download = subcli.add_parser(
|
||||
"download", help="download input file for a given day's puzzle"
|
||||
)
|
||||
download.add_argument(
|
||||
"-f",
|
||||
"--force",
|
||||
action="store_true",
|
||||
required=False,
|
||||
help="force re-download even if input file already exists",
|
||||
)
|
||||
download.add_argument(
|
||||
"-y",
|
||||
"--year",
|
||||
type=int,
|
||||
required=False,
|
||||
help="year of the puzzle (default: current year)",
|
||||
default=get_latest_event_year(),
|
||||
)
|
||||
download.add_argument("day", type=int, help="day of the puzzle (1-25)")
|
||||
|
||||
return parser
|
||||
Reference in New Issue
Block a user