blob: f4c57e6cad93373e22d8daf4fdce6ad7893b8b4e (
plain)
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
(* Business logic behind CLI *)
let run_solver name solver filepath =
let content = Infrastructure.File.read filepath in
match solver content () with
| Error msg ->
Logs.app (fun m -> m "[%s] Err=%s" name msg)
| Ok answer ->
Logs.app (fun m -> m "[%s] ANSWER=%d" name answer)
let run_day _ = function
| 1 ->
let filepath = "../_input/day_01.txt" in
run_solver "D01P01" Application.D01p01.solve filepath ;
run_solver "D01P02" Application.D01p02.solve filepath ;
0
| 2 ->
let filepath = "../_input/day_02.txt" in
run_solver "D02P01" Application.D02p01.solve filepath ;
run_solver "D02P02" Application.D02p02.solve filepath ;
0
| 3 ->
let filepath = "../_input/day_03.txt" in
run_solver "D03P01" Application.D03p01.solve filepath ;
0
| 4 ->
let filepath = "../_input/day_04.txt" in
run_solver "D04P01" Application.D04p01.solve filepath ;
run_solver "D04P02" Application.D04p02.solve filepath ;
0
| 5 ->
let filepath = "../_input/day_05.txt" in
run_solver "D05P01" Application.D05p01.solve filepath ;
0
| 6 ->
let filepath = "../_input/day_06.txt" in
run_solver "D06P01" Application.D06p01.solve filepath ;
run_solver "D06P02" Application.D06p02.solve filepath ;
0
| _ ->
failwith "day not implemented"
(* Command line interface *)
open Cmdliner
let setup_log style_renderer = Fmt_tty.setup_std_outputs ?style_renderer ()
let setup_log_t = Term.(const setup_log $ Fmt_cli.style_renderer ())
let day_arg =
let doc = "Day to run. MUST be in range of 1-12." in
Arg.(value & pos 0 int 1 & info [] ~docv:"DAY" ~doc)
let day_t = Term.(const run_day $ setup_log_t $ day_arg)
let cmd =
let info = Cmd.info "aoc" ~version:"0.1.0" in
Cmd.v info day_t
let run () = Cmd.eval' cmd
|