Find and remove dead code and unused APIs in OCaml projects
at main 55 lines 1.6 kB view raw
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