1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(* SPDX-License-Identifier: AGPL-3.0-or-later *)
(* Copyright © 2021-2024 OCamlPro *)
(* Written by the Owi programmers *)

let string_of_version = function
  | None -> "unknown"
  | Some v -> Build_info.V1.Version.to_string v

let version = string_of_version @@ Build_info.V1.version ()

let statically_linked_libraries =
  Build_info.V1.Statically_linked_libraries.to_list ()
  |> List.map (fun l ->
       ( Build_info.V1.Statically_linked_library.name l
       , Build_info.V1.Statically_linked_library.version l |> string_of_version
       ) )
  |> List.sort (fun (n1, _) (n2, _) -> String.compare n1 n2)

let pp fmt () =
  Fmt.list
    ~sep:(fun fmt () -> Fmt.pf fmt "@\n")
    (fun fmt (name, version) -> Fmt.pf fmt "%s version %s" name version)
    fmt
    (("owi", version) :: statically_linked_libraries);
  Fmt.string fmt "@\n"

let owi_version () = Fmt.str "owi version %s" version

let cmd () = Ok (Fmt.pr "%a" pp ())