package crs

  1. Overview
  2. Docs
A tool for managing code review comments embedded in source code

Install

Dune Dependency

Authors

Maintainers

Sources

crs-0.0.20250705.tbz
sha256=e9f9f5ec5aea9658ed640aaa06f887985bb6870adcf7555ebf6d48bb741e4793
sha512=901ac1caae6c4103a320b4a3a177ca3aa0583ad533c54e7740aba6652ccdbd6311d07ab4b73e3ba750beed24f85479b5e1b0e94504ecfd0c59bd49cdabebc369

doc/src/crs.crs-cli/config.ml.html

Source file config.ml

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
(********************************************************************************)
(*  crs - A tool for managing code review comments embedded in source code      *)
(*  Copyright (C) 2024-2025 Mathieu Barbin <mathieu.barbin@gmail.com>           *)
(*                                                                              *)
(*  This file is part of crs.                                                   *)
(*                                                                              *)
(*  crs is free software; you can redistribute it and/or modify it under the    *)
(*  terms of the GNU Lesser General Public License as published by the Free     *)
(*  Software Foundation either version 3 of the License, or any later version,  *)
(*  with the LGPL-3.0 Linking Exception.                                        *)
(*                                                                              *)
(*  crs is distributed in the hope that it will be useful, but WITHOUT ANY      *)
(*  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS   *)
(*  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License and     *)
(*  the file `NOTICE.md` at the root of this repository for more details.       *)
(*                                                                              *)
(*  You should have received a copy of the GNU Lesser General Public License    *)
(*  and the LGPL-3.0 Linking Exception along with this library. If not, see     *)
(*  <http://www.gnu.org/licenses/> and <https://spdx.org>, respectively.        *)
(********************************************************************************)

module Annotation_severity = struct
  type t =
    | Error
    | Warning
    | Info
  [@@deriving of_yojson, sexp_of]
end

open! Ppx_yojson_conv_lib.Yojson_conv.Primitives

module User_handle = struct
  type t = Vcs.User_handle.t [@@deriving sexp_of]

  let t_of_yojson json = json |> string_of_yojson |> Vcs.User_handle.v
end

type t =
  { default_repo_owner : User_handle.t option [@yojson.option] [@sexp.option]
  ; user_mentions_whitelist : User_handle.t list option [@yojson.option] [@sexp.option]
  ; invalid_crs_annotation_severity : Annotation_severity.t option
        [@yojson.option] [@sexp.option]
  ; crs_due_now_annotation_severity : Annotation_severity.t option
        [@yojson.option] [@sexp.option]
  }
[@@deriving of_yojson, sexp_of]

let create
      ?default_repo_owner
      ?user_mentions_whitelist
      ?invalid_crs_annotation_severity
      ?crs_due_now_annotation_severity
      ()
  =
  { default_repo_owner
  ; user_mentions_whitelist
  ; invalid_crs_annotation_severity
  ; crs_due_now_annotation_severity
  }
;;

let empty =
  { default_repo_owner = None
  ; user_mentions_whitelist = None
  ; invalid_crs_annotation_severity = None
  ; crs_due_now_annotation_severity = None
  }
;;

let load_exn ~path =
  match Yojson_five.Safe.from_file (Fpath.to_string path) with
  | Error msg ->
    Err.raise ~loc:(Loc.of_file ~path) [ Pp.text "Not a valid json file."; Pp.text msg ]
  | Ok json ->
    (match t_of_yojson json with
     | t -> t
     | exception Ppx_yojson_conv_lib.Yojson_conv.Of_yojson_error (exn, json) ->
       Err.raise
         ~loc:(Loc.of_file ~path)
         Pp.O.
           [ Pp.text "Invalid config."
           ; Pp.text "In: " ++ Pp.text (Yojson.Safe.to_string json)
           ; Err.exn exn
           ])
;;
OCaml

Innovation. Community. Security.