Cmdliner terms for ergonomic logging configuration
1(*---------------------------------------------------------------------------
2 Copyright (c) 2025 Thomas Gazagnaire. All rights reserved.
3 SPDX-License-Identifier: MIT
4 ---------------------------------------------------------------------------*)
5
6(** Test CLI for vlog cram tests. *)
7
8open Cmdliner
9
10(* Create a test log source *)
11let src = Logs.Src.create "test" ~doc:"Test source"
12
13module Log = (val Logs.src_log src : Logs.LOG)
14
15(* Create a tracing source *)
16let tracing_src = Logs.Src.create "test.tracing" ~doc:"Test tracing source"
17
18module Trace = (val Logs.src_log tracing_src : Logs.LOG)
19
20let run _config =
21 Log.err (fun m -> m "error message");
22 Log.warn (fun m -> m "warning message");
23 Log.info (fun m -> m "info message");
24 Log.debug (fun m -> m "debug message");
25 Trace.debug (fun m -> m "trace message")
26
27let suite = ("cli", [ Alcotest.test_case "noop" `Quick ignore ])
28
29let cmd =
30 let doc = "Test CLI for vlog" in
31 let info = Cmd.info "test-cli" ~doc in
32 Cmd.v info Term.(const run $ Vlog.setup "test")
33
34let () = exit (Cmd.eval cmd)