A fork of mtelver's day10 project

feat(web): add cmdliner CLI

Add command-line options for day10-web:
- --cache-dir (required): Path to day10's cache directory
- --html-dir (required): Path to generated documentation directory
- --port/-p (default: 8080): HTTP port to listen on
- --host (default: 127.0.0.1): Host address to bind to
- --platform (default: debian-12-x86_64): Platform subdirectory in cache

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+43 -2
+43 -2
web/main.ml
··· 1 - let () = 2 - Dream.run 1 + open Cmdliner 2 + 3 + let cache_dir = 4 + let doc = "Path to day10's cache directory" in 5 + Arg.(required & opt (some dir) None & info ["cache-dir"] ~docv:"DIR" ~doc) 6 + 7 + let html_dir = 8 + let doc = "Path to generated documentation directory" in 9 + Arg.(required & opt (some dir) None & info ["html-dir"] ~docv:"DIR" ~doc) 10 + 11 + let port = 12 + let doc = "HTTP port to listen on" in 13 + Arg.(value & opt int 8080 & info ["port"; "p"] ~docv:"PORT" ~doc) 14 + 15 + let host = 16 + let doc = "Host address to bind to" in 17 + Arg.(value & opt string "127.0.0.1" & info ["host"] ~docv:"HOST" ~doc) 18 + 19 + let platform = 20 + let doc = "Platform subdirectory in cache" in 21 + Arg.(value & opt string "debian-12-x86_64" & info ["platform"] ~docv:"PLATFORM" ~doc) 22 + 23 + type config = { 24 + cache_dir : string; 25 + html_dir : string; 26 + port : int; 27 + host : string; 28 + platform : string; 29 + } [@@warning "-69"] 30 + 31 + let run_server config = 32 + Dream.run ~port:config.port ~interface:config.host 3 33 @@ Dream.logger 4 34 @@ Dream.router [ 5 35 Dream.get "/" (fun _ -> Dream.html "<h1>day10-web</h1>"); 6 36 ] 37 + 38 + let main cache_dir html_dir port host platform = 39 + let config = { cache_dir; html_dir; port; host; platform } in 40 + run_server config 41 + 42 + let cmd = 43 + let doc = "Web dashboard for day10 documentation status" in 44 + let info = Cmd.info "day10-web" ~version:"0.1.0" ~doc in 45 + Cmd.v info Term.(const main $ cache_dir $ html_dir $ port $ host $ platform) 46 + 47 + let () = exit (Cmd.eval cmd)