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
57
58
59
60
61
62
63
64
65
66
67
68
69
module E = struct
type OpamStd.Config.E.t +=
| ALLPARENS of bool option
| SKIPVERSIONCHECKS of bool option
| STRICT of bool option
open OpamStd.Config.E
let allparens = value (function ALLPARENS b -> b | _ -> None)
let skipversionchecks = value (function SKIPVERSIONCHECKS b -> b | _ -> None)
let strict = value (function STRICT b -> b | _ -> None)
end
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
let r = ref default
let update ?noop:_ = setk (fun cfg () -> r := cfg) !r
let initk k =
setk (setk (fun c -> r := c; k)) !r
?strict:(E.strict ())
?skip_version_checks:(E.skipversionchecks ())
?all_parens:(E.allparens ())
let init ?noop:_ = initk (fun () -> ())