diff --git a/aoc.opam b/aoc.opam index 1cd1d95..727e6a1 100644 --- a/aoc.opam +++ b/aoc.opam @@ -23,9 +23,11 @@ build: [ name "-j" jobs + "--promote-install-files=false" "@install" "@runtest" {with-test} "@doc" {with-doc} ] + ["dune" "install" "-p" name "--create-install-files" name] ] dev-repo: "git+https://github.com/username/reponame.git" diff --git a/dune-project b/dune-project index f935866..321aace 100644 --- a/dune-project +++ b/dune-project @@ -15,11 +15,14 @@ (documentation https://url/to/documentation) +(using dune_site 0.1) + (package (name aoc) (synopsis "A short synopsis") (description "A longer description") (depends ocaml dune) + (sites (lib inputs)) (tags (topics "to describe" your project))) diff --git a/src/day1.ml b/src/day1.ml index 6723751..b462240 100644 --- a/src/day1.ml +++ b/src/day1.ml @@ -24,7 +24,7 @@ let part2 lines = ;; let print () = - let lines = Utils.lines_of_file "inputs/day1.tt" in + let lines = Utils.lines_of_input 1 in Printf.( printf "Day 1.1: %d\n" @@ part1 lines; printf "Day 1.2: %d\n" @@ part2 lines) diff --git a/src/day2.ml b/src/day2.ml index d223b8b..768cae7 100644 --- a/src/day2.ml +++ b/src/day2.ml @@ -87,7 +87,7 @@ let part2 lines = ;; let print () = - let lines = Utils.lines_of_file "./inputs/day2.tt" in + let lines = Utils.lines_of_input 2 in Printf.( printf "Day 2.1: %d\n" @@ part1 lines; printf "Day 2.2: %d\n" @@ part2 lines) diff --git a/src/dune b/src/dune index 17ab1e5..09eff7b 100644 --- a/src/dune +++ b/src/dune @@ -1,4 +1,12 @@ (library (name aoc) - (libraries stdio re) + (libraries stdio re dune-site) (preprocess (pps ppx_regexp))) + +(install + (section (site (aoc inputs))) + (files (glob_files ../inputs/*))) + +(generate_sites_module + (module inputs) + (sites aoc)) diff --git a/src/utils.ml b/src/utils.ml index 8c5ecd5..bfd303e 100644 --- a/src/utils.ml +++ b/src/utils.ml @@ -1,9 +1,9 @@ -let lines_of_file filename = Stdio.In_channel.(with_file filename ~f:input_lines) - -let rec print_int_list = function - | [] -> () - | e :: l -> - print_int e; - print_string " "; - print_int_list l +let lines_of_input day = + let base_path = + match Inputs.Sites.inputs with + | path :: _ -> path + | _ -> failwith "cant find sites path" + in + let path = Printf.sprintf "%s/day%d.tt" base_path day in + Stdio.In_channel.(with_file path ~f:input_lines) ;;