Find and remove dead code and unused APIs in OCaml projects
1(* Output formatting and display module *)
2
3type mode = Normal | Quiet | Verbose | Json
4
5let current_mode = ref Normal
6let set_mode mode = current_mode := mode
7
8(* Styles using Tty *)
9let style_green = Tty.Style.(fg Tty.Color.green)
10let style_yellow = Tty.Style.(fg Tty.Color.yellow)
11let style_red = Tty.Style.(fg Tty.Color.red)
12let style_blue = Tty.Style.(fg Tty.Color.blue)
13
14(* Structured output *)
15let header fmt =
16 if !current_mode <> Quiet then
17 Fmt.kstr
18 (fun s -> Fmt.pr "%a@." (Tty.Style.styled style_blue Fmt.string) s)
19 fmt
20 else Fmt.kstr ignore fmt
21
22let section fmt =
23 if !current_mode <> Quiet then Fmt.kstr (fun s -> Fmt.pr " %s@." s) fmt
24 else Fmt.kstr ignore fmt
25
26let success fmt =
27 if !current_mode <> Quiet then
28 Fmt.kstr
29 (fun s -> Fmt.pr "%a@." (Tty.Style.styled style_green Fmt.string) s)
30 fmt
31 else Fmt.kstr ignore fmt
32
33let warning fmt =
34 Fmt.kstr
35 (fun s ->
36 Fmt.epr "%a@." (Tty.Style.styled style_yellow Fmt.string) ("Warning: " ^ s))
37 fmt
38
39let error fmt =
40 Fmt.kstr
41 (fun s ->
42 Fmt.epr "%a@." (Tty.Style.styled style_red Fmt.string) ("Error: " ^ s))
43 fmt
44
45(* Progress indicators - delegate to Tty.Progress *)
46type progress = Tty.Progress.t
47
48let progress ?total () =
49 let enabled = !current_mode = Normal && Tty.Width.is_tty () in
50 let total = Option.value ~default:0 total in
51 Tty.Progress.v ~style:`ASCII ~enabled ~total ""
52
53let update_progress p msg = Tty.Progress.message p msg
54let set_progress_current p n = Tty.Progress.set p n
55let clear_progress p = Tty.Progress.clear p