package opam-format

  1. Overview
  2. Docs

Source file opamFormatConfig.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
(**************************************************************************)
(*                                                                        *)
(*    Copyright 2015 OCamlPro                                             *)
(*                                                                        *)
(*  All rights reserved. This file is distributed under the terms of the  *)
(*  GNU Lesser General Public License version 2.1, with the special       *)
(*  exception on linking described in the file LICENSE.                   *)
(*                                                                        *)
(**************************************************************************)

type t = {
  strict: bool;
  skip_version_checks: bool;
  all_parens: bool;
}

type 'a options_fun =
  ?strict:bool ->
  ?skip_version_checks:bool ->
  ?all_parens:bool ->
  'a

let default = {
  strict = false;
  skip_version_checks = false;
  all_parens = false;
}

let setk k t
    ?strict
    ?skip_version_checks
    ?all_parens
  =
  let (+) x opt = match opt with Some x -> x | None -> x in
  k {
    strict = t.strict + strict;
    skip_version_checks = t.skip_version_checks + skip_version_checks;
    all_parens = t.all_parens + all_parens;
  }

let set t = setk (fun x () -> x) t

(* Global configuration reference *)

let r = ref default

let update ?noop:_ = setk (fun cfg () -> r := cfg) !r

let initk k =
  let open OpamStd.Config in
  setk (setk (fun c -> r := c; k)) !r
    ?strict:(env_bool "STRICT")
    ?skip_version_checks:(env_bool "SKIPVERSIONCHECKS")
    ?all_parens:(env_bool "ALLPARENS")

let init ?noop:_ = initk (fun () -> ())
OCaml

Innovation. Community. Security.