-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
executable file
·41 lines (30 loc) · 1.16 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import argparse
import importlib
import sys
import requests
import requests.utils
from streamer import streams
import yaml
def setup_parser():
parser = argparse.ArgumentParser()
parser.add_argument("year", help="Year of advent of code project", type=int)
parser.add_argument("question", help="Question # / day #", type=int)
parser.add_argument("-c", "--conf", help="Configuration file with cookie", default="conf.yml")
parser.add_argument("-p", "--part", help="Only execute one part", type=int)
return parser
def cookie_dict(conf_file):
with open(conf_file, "r") as file_input:
conf_dict = yaml.safe_load(file_input)
return streams.split(conf_dict['cookie_raw'], "; ") \
.map(str.strip) \
.map(lambda s: s.split("=")) \
.collect_dict()
def main():
parser = setup_parser()
args = parser.parse_args(sys.argv[1:])
solution_module = importlib.import_module("aoc.y{0.year}.d{0.question:02d}".format(args))
with requests.Session() as s:
requests.utils.add_dict_to_cookiejar(s.cookies, cookie_dict(args.conf))
solution_module.show_solution(s, args.part)
if __name__ == '__main__':
main()