Skip to content

Commit edd9431

Browse files
authored
Merge pull request rescript-lang#4689 from rescript-lang/fix_sys_directory
prepare rescript-lang#4687, allow user to customize js suffix per package specs
2 parents 837d170 + 9dfaefb commit edd9431

27 files changed

+2007
-1899
lines changed

jscomp/bsb/bsb_config_parse.ml

+6-4
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,14 @@ let check_stdlib (map : json_map) cwd (*built_in_package*) =
142142
| _ -> assert false
143143

144144
end
145-
let extract_bs_suffix_exn (map : json_map) =
145+
146+
147+
let extract_bs_suffix_exn (map : json_map) : Ext_js_suffix.t =
146148
match Map_string.find_opt map Bsb_build_schemas.suffix with
147-
| None -> false
149+
| None -> Js
148150
| Some (Str {str} as config ) ->
149-
if str = Literals.suffix_js then false
150-
else if str = Literals.suffix_bs_js then true
151+
if str = Literals.suffix_js then Js
152+
else if str = Literals.suffix_bs_js then Bs_js
151153
else Bsb_exception.config_error config
152154
"expect .bs.js or .js string here"
153155
| Some config ->

jscomp/bsb/bsb_config_types.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,6 @@ type t =
7575
reason_react_jsx : reason_react_jsx option; (* whether apply PPX transform or not*)
7676
generators : command Map_string.t ;
7777
cut_generators : bool; (* note when used as a dev mode, we will always ignore it *)
78-
bs_suffix : bool ; (* true means [.bs.js] we should pass [-bs-suffix] flag *)
78+
bs_suffix : Ext_js_suffix.t ;
7979
gentype_config : gentype_config option;
8080
}

jscomp/bsb/bsb_ninja_file_groups.ml

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ let emit_module_build
9393
(package_specs : Bsb_package_specs.t)
9494
(is_dev : bool)
9595
oc
96-
~bs_suffix
96+
~(bs_suffix : Ext_js_suffix.t)
9797
js_post_build_cmd
9898
namespace
9999
(module_info : Bsb_db.module_info)
@@ -187,7 +187,7 @@ let emit_module_build
187187

188188
let handle_files_per_dir
189189
oc
190-
~bs_suffix
190+
~(bs_suffix : Ext_js_suffix.t)
191191
~(rules : Bsb_ninja_rule.builtin)
192192
~package_specs
193193
~js_post_build_cmd

jscomp/bsb/bsb_ninja_file_groups.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
val handle_files_per_dir :
2929
out_channel ->
30-
bs_suffix:bool ->
30+
bs_suffix:Ext_js_suffix.t ->
3131
rules:Bsb_ninja_rule.builtin ->
3232
package_specs:Bsb_package_specs.t ->
3333
js_post_build_cmd:string option ->

jscomp/bsb/bsb_ninja_rule.ml

+2-3
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ let make_custom_rules
115115
~(has_ppx : bool)
116116
~(has_pp : bool)
117117
~(has_builtin : bool)
118-
~(bs_suffix : bool)
118+
~(bs_suffix : Ext_js_suffix.t)
119119
~(reason_react_jsx : Bsb_config_types.reason_react_jsx option)
120120
~(digest : string)
121121
~(refmt : string option) (* set refmt path when needed *)
@@ -131,8 +131,7 @@ let make_custom_rules
131131
Ext_buffer.clear buf;
132132
Ext_buffer.add_string buf "$bsc";
133133
Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg;
134-
if bs_suffix then
135-
Ext_buffer.add_string buf " -bs-suffix";
134+
Ext_js_suffix.to_bsc_flag bs_suffix buf;
136135
if read_cmi then
137136
Ext_buffer.add_string buf " -bs-read-cmi";
138137
if is_dev then

jscomp/bsb/bsb_ninja_rule.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ val make_custom_rules :
7474
has_ppx:bool ->
7575
has_pp:bool ->
7676
has_builtin:bool ->
77-
bs_suffix:bool ->
77+
bs_suffix:Ext_js_suffix.t ->
7878
reason_react_jsx : Bsb_config_types.reason_react_jsx option ->
7979
digest:string ->
8080
refmt:string option ->

jscomp/bsb/bsb_package_specs.ml

+4-4
Original file line numberDiff line numberDiff line change
@@ -152,17 +152,17 @@ let default_package_specs =
152152
*)
153153
let get_list_of_output_js
154154
(package_specs : Spec_set.t)
155-
(bs_suffix : bool)
155+
(bs_suffix : Ext_js_suffix.t)
156156
(output_file_sans_extension : string)
157157
=
158158
Spec_set.fold
159159
(fun (spec : spec) acc ->
160160
let basename = Ext_namespace.change_ext_ns_suffix
161161
output_file_sans_extension
162-
(if bs_suffix then Literals.suffix_bs_js else Literals.suffix_js)
162+
(Ext_js_suffix.to_string bs_suffix)
163163
in
164-
(Bsb_config.proj_rel @@ (if spec.in_source then basename
165-
else prefix_of_format spec.format // basename))
164+
(Bsb_config.proj_rel (if spec.in_source then basename
165+
else prefix_of_format spec.format // basename))
166166
:: acc
167167
) package_specs []
168168

jscomp/bsb/bsb_package_specs.mli

+4-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ val from_json:
3131
Ext_json_types.t -> t
3232

3333
val get_list_of_output_js :
34-
t -> bool -> string -> string list
34+
t ->
35+
Ext_js_suffix.t ->
36+
string ->
37+
string list
3538

3639
(**
3740
Sample output: {[ -bs-package-output commonjs:lib/js/jscomp/test]}

jscomp/bsb/bsb_parse_sources.ml

+1-3
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ type cxt = {
5151
cut_generators : bool;
5252
traverse : bool;
5353
namespace : string option;
54-
bs_suffix: bool;
5554
ignored_dirs : Set_string.t
5655
}
5756

@@ -392,7 +391,7 @@ let scan
392391
~root
393392
~cut_generators
394393
~namespace
395-
~bs_suffix
394+
~(bs_suffix : Ext_js_suffix.t)
396395
~ignored_dirs
397396
x : t =
398397
parse_sources {
@@ -403,7 +402,6 @@ let scan
403402
root ;
404403
cut_generators;
405404
namespace;
406-
bs_suffix;
407405
traverse = false
408406
} x
409407

jscomp/bsb/bsb_parse_sources.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ val scan :
3434
root: string ->
3535
cut_generators: bool ->
3636
namespace : string option ->
37-
bs_suffix:bool ->
37+
bs_suffix:Ext_js_suffix.t ->
3838
ignored_dirs:Set_string.t ->
3939
Ext_json_types.t ->
4040
Bsb_file_groups.t

jscomp/common/js_config.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ let syntax_only = ref false
6161
let binary_ast = ref false
6262

6363

64-
let bs_suffix = ref false
64+
let bs_suffix : Ext_js_suffix.t ref = ref Ext_js_suffix.Js
6565

6666
let debug = ref false
6767

jscomp/common/js_config.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ val binary_ast : bool ref
7777

7878

7979

80-
val bs_suffix : bool ref
80+
val bs_suffix : Ext_js_suffix.t ref
8181
val debug : bool ref
8282

8383
val cmi_only : bool ref

jscomp/core/lam_compile_main.ml

+6-6
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ let get_cmj_case output_prefix : Ext_js_file_kind.t =
3737
Ext_char.is_lower_case (Filename.basename output_prefix).[0]
3838
in
3939
match little, !Js_config.bs_suffix with
40-
| true, true -> Little_bs
41-
| true, false -> Little_js
42-
| false, true -> Upper_bs
43-
| false, false -> Upper_js
40+
| true, Bs_js -> Little_bs
41+
| true, Js -> Little_js
42+
| false, Bs_js -> Upper_bs
43+
| false, Js -> Upper_js
4444

4545

4646
let compile_group (meta : Lam_stats.t)
@@ -278,7 +278,7 @@ let compile
278278
meta
279279
effect
280280
coerced_input.export_map
281-
(get_cmj_case output_prefix)
281+
~js_file_kind:(get_cmj_case output_prefix)
282282
in
283283
(if not !Clflags.dont_write_files then
284284
Js_cmj_format.to_file
@@ -298,7 +298,7 @@ let lambda_as_module
298298
Ext_namespace.change_ext_ns_suffix
299299
(Filename.basename
300300
output_prefix)
301-
(if !Js_config.bs_suffix then Literals.suffix_bs_js else Literals.suffix_js)
301+
(Ext_js_suffix.to_string !Js_config.bs_suffix)
302302
in
303303
let package_info = Js_packages_state.get_packages_info () in
304304
if Js_packages_info.is_empty package_info && !Js_config.js_stdout then begin

jscomp/core/lam_stats_export.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ let export_to_cmj
148148
(meta : Lam_stats.t )
149149
effect
150150
export_map
151-
js_file_kind
151+
~js_file_kind
152152
: Js_cmj_format.t =
153153
let values = values_of_export meta export_map in
154154

jscomp/core/lam_stats_export.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ val export_to_cmj :
3434
Lam_stats.t ->
3535
Js_cmj_format.effect ->
3636
Lam.t Map_ident.t ->
37-
Ext_js_file_kind.t ->
37+
js_file_kind:Ext_js_file_kind.t ->
3838
Js_cmj_format.t
3939

jscomp/ext/ext_js_suffix.ml

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
type t =
2+
| Js
3+
| Bs_js
4+
5+
6+
let to_string (x : t) =
7+
match x with
8+
| Js -> Literals.suffix_js
9+
| Bs_js -> Literals.suffix_bs_js
10+
11+
let to_bsc_flag (x : t) (buf : Ext_buffer.t) =
12+
match x with
13+
| Js -> ()
14+
| Bs_js -> Ext_buffer.add_string buf " -bs-suffix"

jscomp/main/js_main.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ let buckle_script_flags : (string * Bsc_args.spec * string) array =
328328
"-bs-g", unit_call (fun _ -> Js_config.debug := true; Lexer.replace_directive_bool "DEBUG" true),
329329
"Debug mode";
330330

331-
"-bs-suffix", set Js_config.bs_suffix,
331+
"-bs-suffix", unit_call (fun _ -> Js_config.bs_suffix := Bs_js),
332332
"*internal* set suffix to .bs.js";
333333

334334
"-bs-package-name", string_call Js_packages_state.set_package_name,

0 commit comments

Comments
 (0)