refactor deduplicate collect_repo_paths in handlers

The function was defined twice: once at top-level and once locally inside project_dir. Merged into a single version with an optional ~prefix parameter.

Commit
93db7f88b385b3f96a2706d8640ea7f27b44b8c6
Author
Claude Sonnet 4 <claude@anthropic.invalid>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
lib/handlers.ml
index 9e83140a..1f69e81d 100644..100644
@@ -47,18 +47,22 @@
47 47 ~root_title:(resolve_root_title config)
48 48 ~nav_logo:config.Config.nav_logo
49 49
50 Removed: let collect_repo_paths nodes =
51 Removed: let rec walk prefix acc = function
50 Added: let collect_repo_paths ?(prefix = "") nodes =
51 Added: let rec walk current_prefix acc = function
52 52 | Resolvers.Repo { repo_name; _ } ->
53 53 let full =
54 Removed: if prefix = "" then repo_name else prefix ^ "/" ^ repo_name
54 Added: if current_prefix = "" then repo_name
55 Added: else current_prefix ^ "/" ^ repo_name
55 56 in
56 57 full :: acc
57 58 | Resolvers.Directory (dir_name, children) ->
58 Removed: let p = if prefix = "" then dir_name else prefix ^ "/" ^ dir_name in
59 Added: let p =
60 Added: if current_prefix = "" then dir_name
61 Added: else current_prefix ^ "/" ^ dir_name
62 Added: in
59 63 List.fold_left (walk p) acc children
60 64 in
61 Removed: List.fold_left (walk "") [] nodes
65 Added: List.fold_left (walk prefix) [] nodes |> List.rev
62 66
63 67 let root config _request =
64 68 match Resolvers.scan_project_root config with
@@ -285,17 +289,7 @@
285 289 match Resolvers.scan_subdirectory config subdir with
286 290 | Ok nodes ->
287 291 let open Lwt.Syntax in
288 Removed: let rec collect_repo_paths prefix = function
289 Removed: | Resolvers.Repo { repo_name; _ } ->
290 Removed: let full =
291 Removed: if prefix = "" then repo_name else prefix ^ "/" ^ repo_name
292 Removed: in
293 Removed: [ full ]
294 Removed: | Resolvers.Directory (dir_name, children) ->
295 Removed: let p = if prefix = "" then dir_name else prefix ^ "/" ^ dir_name in
296 Removed: List.concat_map (collect_repo_paths p) children
297 Removed: in
298 Removed: let repo_paths = List.concat_map (collect_repo_paths subdir) nodes in
292 Added: let repo_paths = collect_repo_paths ~prefix:subdir nodes in
299 293 let* dates =
300 294 Lwt_list.map_p
301 295 (fun path ->