44 lines
1.8 KiB
OCaml
44 lines
1.8 KiB
OCaml
|
|
(** Credentials are used to authenticate with [adventofcode.com], to automate some slightly
|
||
|
|
annoying things that you need to do when working on puzzle solutions. *)
|
||
|
|
module Credentials : sig
|
||
|
|
type t
|
||
|
|
(** A complete set of credentials used to authenticate with [adventofcode.com]. *)
|
||
|
|
|
||
|
|
val of_auth_token : string -> t
|
||
|
|
(** [of_auth_token session_token] constructs a [t] from the session token issued by
|
||
|
|
[adventofcode.com]. *)
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Specifies the way that we'd like our problem runner to run. *)
|
||
|
|
module Run_mode : sig
|
||
|
|
(** Specifies the way that we'd like our problem runner to run. *)
|
||
|
|
type t =
|
||
|
|
| Test_from_puzzle_input of { credentials : Credentials.t option }
|
||
|
|
(** Indicates that we'd like to test the puzzle solution that we're working on, without
|
||
|
|
submitting the answer to [adventofcode.com] *)
|
||
|
|
| Submit of { credentials : Credentials.t }
|
||
|
|
(** Indicates that we'd like to run a puzzle solution, and if successful, submit the answer to
|
||
|
|
[adventofcode.com] *)
|
||
|
|
end
|
||
|
|
|
||
|
|
(** Fully configures an invocation of [run]. *)
|
||
|
|
module Options : sig
|
||
|
|
type t = {
|
||
|
|
year : int;
|
||
|
|
(** The "year" of the puzzle that we'd like to run -- e.g. [2015], or [2022]. *)
|
||
|
|
day : int;
|
||
|
|
(** The "day" of the puzzle that we'd like to run -- e.g. [1], or [18]. *)
|
||
|
|
part : int;
|
||
|
|
(** The "part" of the puzzle that we'd like to run -- i.e. [1], or [2]. *)
|
||
|
|
run_mode : Run_mode.t;
|
||
|
|
(** The "run_mode" of the puzzle that we'd like to run. See [Run_mode] for more details. *)
|
||
|
|
}
|
||
|
|
(** Fully configures an invocation of [run]. *)
|
||
|
|
end
|
||
|
|
|
||
|
|
val run : Options.t -> (string, string) result
|
||
|
|
(** [run options] runs a puzzle solution, configured by [options].
|
||
|
|
|
||
|
|
This may return [Error] for a number of reasons -- the returned [string] should indicate what
|
||
|
|
went wrong. *)
|