Apply Dune formatting

Commit
78134238d435a7eb85609c2919d0a619879e4854
Author
Codex AI Agent <codex-ai@openai.invalid>
Author date
Committer
Codex AI Agent <codex-ai@openai.invalid>
Committer date
Changed files
lib/resolvers.ml
index ec9bef85..db51bed5 100644..100644
@@ -29,8 +29,7 @@
29 29
30 30 type repository_layout = { worktree : string; git_dir : string }
31 31
32 Removed: let is_directory path =
33 Removed: try Sys.is_directory path with Sys_error _ -> false
32 Added: let is_directory path = try Sys.is_directory path with Sys_error _ -> false
34 33
35 34 let is_git_directory path =
36 35 is_directory path
@@ -75,13 +74,10 @@
75 74 else default_repo_description
76 75
77 76 let short_hash hash = String.sub hash 0 8
78 Removed:
79 77 let branch_ref name = Git.Reference.v ("refs/heads/" ^ name)
80 78
81 79 let fallback_branch_candidates () =
82 Removed: let add acc name =
83 Removed: if List.mem name acc then acc else acc @ [ name ]
84 Removed: in
80 Added: let add acc name = if List.mem name acc then acc else acc @ [ name ] in
85 81 let candidates = [] in
86 82 let candidates = add candidates config.default_branch in
87 83 let candidates = add candidates "main" in
@@ -96,29 +92,30 @@
96 92 let open Lwt.Syntax in
97 93 let* references = Store.Ref.list store in
98 94 let branches =
99 Removed: references
100 Removed: |> List.map fst
95 Added: references |> List.map fst
101 96 |> List.filter_map (fun reference ->
102 Removed: let name = Git.Reference.to_string reference in
103 Removed: if String.starts_with ~prefix:"refs/heads/" name then
104 Removed: Some (name, reference)
105 Removed: else None)
97 Added: let name = Git.Reference.to_string reference in
98 Added: if String.starts_with ~prefix:"refs/heads/" name then
99 Added: Some (name, reference)
100 Added: else None)
106 101 |> List.sort (fun (a, _) (b, _) -> String.compare a b)
107 102 in
108 103 let rec try_branches = function
109 Removed: | [] -> Lwt_result.fail (`Msg "no branch could be resolved for repository")
110 Removed: | (_, reference) :: rest ->
104 Added: | [] ->
105 Added: Lwt_result.fail
106 Added: (`Msg "no branch could be resolved for repository")
107 Added: | (_, reference) :: rest -> (
111 108 Lwt.bind (Store.Ref.resolve store reference) @@ function
112 109 | Ok hash -> Lwt_result.return hash
113 110 | Error (`Reference_not_found _) -> try_branches rest
114 Removed: | Error err -> fail_store_error err
111 Added: | Error err -> fail_store_error err)
115 112 in
116 113 try_branches branches
117 Removed: | reference :: rest ->
114 Added: | reference :: rest -> (
118 115 Lwt.bind (Store.Ref.resolve store reference) @@ function
119 116 | Ok hash -> Lwt_result.return hash
120 117 | Error (`Reference_not_found _) -> try_references rest
121 Removed: | Error err -> fail_store_error err
118 Added: | Error err -> fail_store_error err)
122 119 in
123 120 Lwt.bind (Store.Ref.resolve store Git.Reference.head) @@ function
124 121 | Ok hash -> Lwt_result.return hash
@@ -205,8 +202,9 @@
205 202 let branches =
206 203 references
207 204 |> List.filter_map (fun ((reference, _) as raw) ->
208 Removed: Git.Reference.to_string reference |> branch_name
209 Removed: |> Option.map (fun name -> to_t_with_name name raw))
205 Added: Git.Reference.to_string reference
206 Added: |> branch_name
207 Added: |> Option.map (fun name -> to_t_with_name name raw))
210 208 in
211 209 Lwt_result.return branches
212 210
@@ -217,16 +215,15 @@
217 215 let tags =
218 216 references
219 217 |> List.filter_map (fun ((reference, _) as raw) ->
220 Removed: Git.Reference.to_string reference |> tag_name
221 Removed: |> Option.map (fun name -> to_t_with_name name raw))
218 Added: Git.Reference.to_string reference
219 Added: |> tag_name
220 Added: |> Option.map (fun name -> to_t_with_name name raw))
222 221 in
223 222 Lwt_result.return tags
224 223
225 224 let of_id repo id =
226 225 let* branches = branches repo in
227 Removed: let branch =
228 Removed: branches |> List.find_opt (fun branch -> branch.name = id)
229 Removed: in
226 Added: let branch = branches |> List.find_opt (fun branch -> branch.name = id) in
230 227 match branch with
231 228 | Some branch -> Lwt_result.return branch
232 229 | None -> Lwt_result.fail @@ `Msg ("no reference matches id " ^ id)
@@ -363,23 +360,22 @@
363 360 }
364 361 :: acc)
365 362 in
366 Removed: if matrix_size > 4_000_000 then
367 Removed: all_deletions 0 [] @ all_additions 0 []
363 Added: if matrix_size > 4_000_000 then all_deletions 0 [] @ all_additions 0 []
368 364 else
369 365 let lengths = Array.make_matrix (old_length + 1) (new_length + 1) 0 in
370 366 for old_index = old_length - 1 downto 0 do
371 367 for new_index = new_length - 1 downto 0 do
372 368 lengths.(old_index).(new_index) <-
373 Removed: if old_lines.(old_index) = new_lines.(new_index) then
374 Removed: lengths.(old_index + 1).(new_index + 1) + 1
375 Removed: else
376 Removed: max lengths.(old_index + 1).(new_index)
377 Removed: lengths.(old_index).(new_index + 1)
369 Added: (if old_lines.(old_index) = new_lines.(new_index) then
370 Added: lengths.(old_index + 1).(new_index + 1) + 1
371 Added: else
372 Added: max
373 Added: lengths.(old_index + 1).(new_index)
374 Added: lengths.(old_index).(new_index + 1))
378 375 done
379 376 done;
380 377 let rec build old_index new_index acc =
381 Removed: if old_index = old_length then
382 Removed: List.rev acc @ all_additions new_index []
378 Added: if old_index = old_length then List.rev acc @ all_additions new_index []
383 379 else if new_index = new_length then
384 380 List.rev acc @ all_deletions old_index []
385 381 else if old_lines.(old_index) = new_lines.(new_index) then
@@ -421,8 +417,8 @@
421 417 let changed =
422 418 Array.to_list (Array.mapi (fun index line -> (index, line.kind)) lines)
423 419 |> List.filter_map (function
424 Removed: | index, (Addition | Deletion) -> Some index
425 Removed: | _, Context -> None)
420 Added: | index, (Addition | Deletion) -> Some index
421 Added: | _, Context -> None)
426 422 in
427 423 let ranges =
428 424 let add_range ranges index =
@@ -489,12 +485,12 @@
489 485 | None -> Lwt_result.return ""
490 486 | Some { hash; perm = `Commit } ->
491 487 Lwt_result.return ("Subproject commit " ^ hash ^ "\n")
492 Removed: | Some { hash; _ } ->
488 Added: | Some { hash; _ } -> (
493 489 let* hash = hash_of_hex hash in
494 490 Lwt_result.bind (Store.read store hash) @@ function
495 491 | Git.Value.Blob blob ->
496 492 Lwt_result.return (Store.Value.Blob.to_string blob)
497 Removed: | _ -> Lwt_result.fail (`Msg "file entry does not point to a blob")
493 Added: | _ -> Lwt_result.fail (`Msg "file entry does not point to a blob"))
498 494
499 495 let of_commit repo (commit : Commit.t) =
500 496 let* store = store repo in
@@ -502,7 +498,7 @@
502 498 let* old_files =
503 499 match commit.parents with
504 500 | [] -> Lwt_result.return Path_map.empty
505 Removed: | parent :: _ ->
501 Added: | parent :: _ -> (
506 502 let* parent_hash = hash_of_hex parent in
507 503 Lwt_result.bind (Store.read store parent_hash) @@ function
508 504 | Git.Value.Commit parent_commit ->
@@ -510,15 +506,15 @@
510 506 Store.Value.Commit.tree parent_commit |> Store.Hash.to_hex
511 507 in
512 508 flatten_tree store "" tree Path_map.empty
513 Removed: | _ -> Lwt_result.fail (`Msg ("parent is not a commit " ^ parent))
509 Added: | _ -> Lwt_result.fail (`Msg ("parent is not a commit " ^ parent)))
514 510 in
515 511 let changed_files =
516 512 Path_map.merge
517 513 (fun _ old_file new_file ->
518 514 match (old_file, new_file) with
519 515 | Some old_file, Some new_file
520 Removed: when old_file.hash = new_file.hash
521 Removed: && old_file.perm = new_file.perm ->
516 Added: when old_file.hash = new_file.hash && old_file.perm = new_file.perm
517 Added: ->
522 518 None
523 519 | None, None -> None
524 520 | _ -> Some (old_file, new_file))
@@ -539,11 +535,14 @@
539 535 path;
540 536 old_hash = Option.map (fun file -> file.hash) old_file;
541 537 new_hash = Option.map (fun file -> file.hash) new_file;
542 Removed: old_mode = Option.map (fun file -> mode_of_perm file.perm) old_file;
543 Removed: new_mode = Option.map (fun file -> mode_of_perm file.perm) new_file;
538 Added: old_mode =
539 Added: Option.map (fun file -> mode_of_perm file.perm) old_file;
540 Added: new_mode =
541 Added: Option.map (fun file -> mode_of_perm file.perm) new_file;
544 542 binary;
545 543 hunks =
546 Removed: if binary then [] else line_diff old_content new_content |> hunks;
544 Added: (if binary then []
545 Added: else line_diff old_content new_content |> hunks);
547 546 }
548 547 in
549 548 build (file :: acc) files
lib/views.ml
index 15cea4dc..a6dae035 100644..100644
@@ -106,9 +106,9 @@
106 106 Sys.readdir config.git_project_root
107 107 |> Array.to_list
108 108 |> List.filter (fun name ->
109 Removed: not (name.[0] = '.')
110 Removed: && Resolvers.is_repository
111 Removed: (Filename.concat config.git_project_root name))
109 Added: (not (name.[0] = '.'))
110 Added: && Resolvers.is_repository
111 Added: (Filename.concat config.git_project_root name))
112 112 |> List.sort String.compare
113 113 in
114 114 let li_of_repo repo =
@@ -242,19 +242,21 @@
242 242 | Resolvers.Diff.Addition -> ("addition", "+")
243 243 | Resolvers.Diff.Deletion -> ("deletion", "-")
244 244 in
245 Removed: HTML.
246 Removed: (div [ class_ "diff-line %s" class_name ]
247 Removed: [
248 Removed: span [ class_ "line-number" ] [ txt "%s" (number line.old_number) ];
249 Removed: span [ class_ "line-number" ] [ txt "%s" (number line.new_number) ];
250 Removed: span [ class_ "diff-marker" ] [ txt "%s" marker ];
251 Removed: span [ class_ "diff-text" ] [ txt "%s" line.text ];
252 Removed: ])
245 Added: HTML.(
246 Added: div
247 Added: [ class_ "diff-line %s" class_name ]
248 Added: [
249 Added: span [ class_ "line-number" ] [ txt "%s" (number line.old_number) ];
250 Added: span [ class_ "line-number" ] [ txt "%s" (number line.new_number) ];
251 Added: span [ class_ "diff-marker" ] [ txt "%s" marker ];
252 Added: span [ class_ "diff-text" ] [ txt "%s" line.text ];
253 Added: ])
253 254 in
254 255 let hunk (hunk : Resolvers.Diff.hunk) =
255 256 HTML.
256 257 [
257 Removed: div [ class_ "hunk-header" ]
258 Added: div
259 Added: [ class_ "hunk-header" ]
258 260 [
259 261 txt "@@ -%d,%d +%d,%d @@" hunk.old_start hunk.old_count
260 262 hunk.new_start hunk.new_count;
@@ -276,18 +278,20 @@
276 278 HTML.[ p [ class_ "binary-diff" ] [ txt "Binary files differ" ] ]
277 279 else List.concat_map hunk file.hunks
278 280 in
279 Removed: HTML.
280 Removed: (section [ class_ "diff-file" ]
281 Removed: ([
282 Removed: h4 [ class_ "diff-file-header" ] [ txt "%s" file.path ];
283 Removed: div [ class_ "diff-meta" ]
284 Removed: [
285 Removed: txt "index %s..%s %s..%s" (hash file.old_hash)
286 Removed: (hash file.new_hash) (mode file.old_mode)
287 Removed: (mode file.new_mode);
288 Removed: ];
289 Removed: ]
290 Removed: @ file_body))
281 Added: HTML.(
282 Added: section
283 Added: [ class_ "diff-file" ]
284 Added: ([
285 Added: h4 [ class_ "diff-file-header" ] [ txt "%s" file.path ];
286 Added: div
287 Added: [ class_ "diff-meta" ]
288 Added: [
289 Added: txt "index %s..%s %s..%s" (hash file.old_hash)
290 Added: (hash file.new_hash) (mode file.old_mode)
291 Added: (mode file.new_mode);
292 Added: ];
293 Added: ]
294 Added: @ file_body))
291 295 in
292 296 let diff_content =
293 297 match diff with
@@ -303,18 +307,19 @@
303 307 subtitle = Resolvers.repo_description repo;
304 308 active = Summary;
305 309 content =
306 Removed: HTML.
307 Removed: ([
308 Removed: h3 [] [ txt "%s" message ];
309 Removed: dl [ class_ "commit-meta" ]
310 Removed: [
311 Removed: dt [] [ txt "Commit" ];
312 Removed: dd [] [ txt "%s" commit.hash ];
313 Removed: dt [] [ txt "Author" ];
314 Removed: dd []
315 Removed: [ txt "%s <%s>" commit.author.name commit.author.email ];
316 Removed: ];
317 Removed: ]
310 Added: HTML.(
311 Added: [
312 Added: h3 [] [ txt "%s" message ];
313 Added: dl
314 Added: [ class_ "commit-meta" ]
315 Added: [
316 Added: dt [] [ txt "Commit" ];
317 Added: dd [] [ txt "%s" commit.hash ];
318 Added: dt [] [ txt "Author" ];
319 Added: dd []
320 Added: [ txt "%s <%s>" commit.author.name commit.author.email ];
321 Added: ];
322 Added: ]
318 323 @ diff_content);
319 324 }
320 325
test/test_ogit.ml
index 4a55721c..693fb0b2 100644..100644
@@ -19,8 +19,7 @@
19 19 Unix.putenv "XDG_CONFIG_HOME" "/tmp/xdg-config";
20 20 assert (
21 21 Ogit.Config.locate_config_file ()
22 Removed: = Filename.concat (Filename.concat "/tmp/xdg-config" "ogit")
23 Removed: "config.toml"));
22 Added: = Filename.concat (Filename.concat "/tmp/xdg-config" "ogit") "config.toml"));
24 23 Unix.putenv "OGIT_CONFIG" "/tmp/custom-ogit.toml";
25 24 assert (Ogit.Config.locate_config_file () = "/tmp/custom-ogit.toml")
26 25
@@ -79,31 +78,11 @@
79 78 let open Ogit.Resolvers.Diff in
80 79 match line_diff "first\nold\nlast\n" "first\nnew\nlast\n" with
81 80 | [
82 Removed: {
83 Removed: kind = Context;
84 Removed: old_number = Some 1;
85 Removed: new_number = Some 1;
86 Removed: text = "first";
87 Removed: };
88 Removed: {
89 Removed: kind = Deletion;
90 Removed: old_number = Some 2;
91 Removed: new_number = None;
92 Removed: text = "old";
93 Removed: };
94 Removed: {
95 Removed: kind = Addition;
96 Removed: old_number = None;
97 Removed: new_number = Some 2;
98 Removed: text = "new";
99 Removed: };
100 Removed: {
101 Removed: kind = Context;
102 Removed: old_number = Some 3;
103 Removed: new_number = Some 3;
104 Removed: text = "last";
105 Removed: };
106 Removed: ] ->
81 Added: { kind = Context; old_number = Some 1; new_number = Some 1; text = "first" };
82 Added: { kind = Deletion; old_number = Some 2; new_number = None; text = "old" };
83 Added: { kind = Addition; old_number = None; new_number = Some 2; text = "new" };
84 Added: { kind = Context; old_number = Some 3; new_number = Some 3; text = "last" };
85 Added: ] ->
107 86 ()
108 87 | _ -> failwith "unexpected line diff"
109 88
@@ -117,7 +96,8 @@
117 96 in
118 97 match
119 98 hunks
120 Removed: (line_diff (String.concat "\n" old_content)
99 Added: (line_diff
100 Added: (String.concat "\n" old_content)
121 101 (String.concat "\n" new_content))
122 102 with
123 103 | [ hunk ] ->
@@ -143,14 +123,12 @@
143 123 assert (not (Ogit.Resolvers.is_valid_hash_hex (String.make 39 'a')));
144 124 assert (not (Ogit.Resolvers.is_valid_hash_hex (String.make 41 'a')));
145 125 assert (not (Ogit.Resolvers.is_valid_hash_hex (String.make 39 'a' ^ "x")));
126 Added: assert (Ogit.Resolvers.Reference.branch_name "refs/heads/main" = Some "main");
146 127 assert (
147 Removed: Ogit.Resolvers.Reference.branch_name "refs/heads/main" = Some "main");
148 Removed: assert (
149 128 Ogit.Resolvers.Reference.branch_name "refs/heads/feature/topic"
150 129 = Some "feature/topic");
151 130 assert (Ogit.Resolvers.Reference.branch_name "HEAD" = None);
152 Removed: assert (
153 Removed: Ogit.Resolvers.Reference.tag_name "refs/tags/v1.0.0" = Some "v1.0.0");
131 Added: assert (Ogit.Resolvers.Reference.tag_name "refs/tags/v1.0.0" = Some "v1.0.0");
154 132 assert (Ogit.Resolvers.Reference.tag_name "refs/heads/v1.0.0" = None);
155 133 test_config_round_trip ();
156 134 test_config_location ();