refactor extract fetch_repo_dates helper in handlers

The date-fetching Lwt_list.map_p block was duplicated between root and project_dir. Now both call fetch_repo_dates.

Commit
be27c4ffd2f3dfb80ff5032ade2c92fa1cf6ecf2
Author
Claude Sonnet 4 <claude@anthropic.invalid>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
lib/handlers.ml
index 20250e75..dcac9036 100644..100644
@@ -64,22 +64,24 @@
64 64 in
65 65 List.fold_left (walk prefix) [] nodes |> List.rev
66 66
67 Added: let fetch_repo_dates config repo_paths =
68 Added: let open Lwt.Syntax in
69 Added: Lwt_list.map_p
70 Added: (fun path ->
71 Added: Lwt.bind (Resolvers.open_repository config path) @@ function
72 Added: | Error _ -> Lwt.return (path, None)
73 Added: | Ok repository ->
74 Added: let* date = Resolvers.head_commit_date repository in
75 Added: let* () = Resolvers.close_repository repository in
76 Added: Lwt.return (path, date))
77 Added: repo_paths
78 Added:
67 79 let root config _request =
68 80 match Resolvers.scan_project_root config with
69 81 | Ok nodes ->
70 82 let open Lwt.Syntax in
71 83 let repo_paths = collect_repo_paths nodes in
72 Removed: let* dates =
73 Removed: Lwt_list.map_p
74 Removed: (fun path ->
75 Removed: Lwt.bind (Resolvers.open_repository config path) @@ function
76 Removed: | Error _ -> Lwt.return (path, None)
77 Removed: | Ok repository ->
78 Removed: let* date = Resolvers.head_commit_date repository in
79 Removed: let* () = Resolvers.close_repository repository in
80 Removed: Lwt.return (path, date))
81 Removed: repo_paths
82 Removed: in
84 Added: let* dates = fetch_repo_dates config repo_paths in
83 85 let node_name = function
84 86 | Resolvers.Repo { repo_name; _ } -> repo_name
85 87 | Resolvers.Directory (dir_name, _) -> dir_name ^ "/"
@@ -290,17 +292,7 @@
290 292 | Ok nodes ->
291 293 let open Lwt.Syntax in
292 294 let repo_paths = collect_repo_paths ~prefix:subdir nodes in
293 Removed: let* dates =
294 Removed: Lwt_list.map_p
295 Removed: (fun path ->
296 Removed: Lwt.bind (Resolvers.open_repository config path) @@ function
297 Removed: | Error _ -> Lwt.return (path, None)
298 Removed: | Ok repository ->
299 Removed: let* date = Resolvers.head_commit_date repository in
300 Removed: let* () = Resolvers.close_repository repository in
301 Removed: Lwt.return (path, date))
302 Removed: repo_paths
303 Removed: in
295 Added: let* dates = fetch_repo_dates config repo_paths in
304 296 let readme = Resolvers.read_subdir_readme config subdir in
305 297 Views.root (site config) ~dates ~prefix:subdir ?readme nodes
306 298 | Error error -> error_response error