forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbsb_ninja_check.mli
69 lines (63 loc) · 2.66 KB
/
bsb_ninja_check.mli
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
(* Copyright (C) 2015 - 2016 Bloomberg Finance L.P.
* Copyright (C) 2017 - Hongbo Zhang, Authors of ReScript
* This program 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
* (at your option) any later version.
*
* In addition to the permissions granted to you by the LGPL, you may combine
* or link a "work that uses the Library" with a publicly distributed version
* of this file to produce a combined library or application, then distribute
* that combined work under the terms of your choosing, with no requirement
* to comply with the obligations normally placed on you by section 4 of the
* LGPL version 3 (or the corresponding section of a later version of the LGPL
* should you choose to use a later version).
*
* This program 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
(**
This module is used to check whether [build.ninja] needs
be regenerated. Everytime [bsb] run [regenerate_ninja],
bsb will try to [check] if it is needed,
if needed, bsb will regenerate ninja file and store the
metadata again
*)
type check_result =
| Good
| Bsb_file_corrupted
| Bsb_file_not_exist (** We assume that it is a clean repo *)
| Bsb_source_directory_changed
| Bsb_bsc_version_mismatch
| Bsb_forced
| Bsb_package_kind_inconsistent
| Other of string
val pp_check_result : Format.formatter -> check_result -> unit
val record :
package_kind:Bsb_package_kind.t ->
per_proj_dir:string ->
file:string ->
config:Bsb_config_types.t ->
string list ->
unit
(** [record cwd file relevant_file_or_dirs]
The data structure we decided to whether regenerate [build.ninja]
or not.
Note that if we don't record absolute path, ninja will not notice its build spec changed,
it will not trigger rebuild behavior,
It may not be desired behavior, since there is some subtlies here (__FILE__ or __dirname)
We serialize such data structure and call {!check} to decide
[build.ninja] should be regenerated
*)
val check :
package_kind:Bsb_package_kind.t ->
per_proj_dir:string ->
forced:bool ->
file:string ->
check_result
(** check if [build.ninja] should be regenerated *)