33load ("@bazel_skylib//lib:paths.bzl" , "paths" )
44
55ClosureTsCompileInfo = provider (doc = "info about a closure ts compile rule" , fields = {
6- "sources" : "DepSet<File>: direct + transitive sources" ,
6+ "direct_srcs" : "DepSet<File>: direct sources" ,
7+ "transitive_srcs" : "DepSet<File>: transitive sources" ,
8+ "direct_outs" : "DepSet<File>: direct outputs" ,
9+ "transitive_outs" : "DepSet<File>: transitive outputs" ,
710})
811
912def _output_for_ts_input (ctx , src ):
@@ -13,58 +16,54 @@ def _output_for_ts_input(ctx, src):
1316def _output_for_externs (ctx ):
1417 return ctx .actions .declare_file (ctx .label .name + ".externs.js" )
1518
16- def _tsickle_action (ctx ):
17- direct = ctx .files .srcs
18- transitive = [dep [ClosureTsCompileInfo ].sources for dep in ctx .attr .deps ]
19+ def _closure_ts_compile_impl (ctx ):
20+ direct_srcs = ctx .files .srcs
21+ transitive_srcs = [dep [ClosureTsCompileInfo ].transitive_srcs for dep in ctx .attr .deps ]
22+ transitive_outs = [dep [ClosureTsCompileInfo ].transitive_outs for dep in ctx .attr .deps ]
1923
2024 args = ctx .actions .args ()
21- args .add_all ([ src . short_path for src in direct ] )
25+ args .add_all (direct_srcs )
2226
2327 env = {
2428 "BAZEL_BINDIR" : ctx .bin_dir .path ,
25- "BAZEL_WORKSPACE" : ctx .label .workspace_name ,
2629 "BAZEL_PACKAGE" : ctx .label .package ,
2730 }
2831
2932 direct_ts = []
3033 direct_dts = []
31- for src in direct :
34+ for src in direct_srcs :
3235 if src .basename .endswith (".d.ts" ):
3336 direct_dts .append (src )
3437 else :
3538 direct_ts .append (src )
3639
37- outputs = [_output_for_ts_input (ctx , f ) for f in direct_ts ]
40+ direct_outs = [_output_for_ts_input (ctx , f ) for f in direct_ts ]
3841 if len (direct_dts ) > 0 :
3942 externs_output = _output_for_externs (ctx )
40- outputs .append (externs_output )
41- env ["EXTERNS_PATH" ] = externs_output .short_path
43+ direct_outs .append (externs_output )
44+ env ["EXTERNS_PATH" ] = externs_output .short_path . replace ( "../" , "external/" )
4245
43- inputs = depset (direct = direct , transitive = transitive )
46+ all_srcs = depset (direct = direct_srcs , transitive = transitive_srcs )
47+ all_outs = depset (direct = direct_outs , transitive = transitive_outs )
4448
4549 ctx .actions .run (
4650 mnemonic = "TsickleCompile" ,
4751 executable = ctx .executable ._compiler ,
4852 arguments = [args ],
49- inputs = inputs ,
50- outputs = outputs ,
53+ inputs = all_srcs ,
54+ outputs = direct_outs ,
5155 env = env ,
5256 )
5357
54- return struct (
55- inputs = inputs ,
56- outputs = outputs ,
57- )
58-
59- def _closure_ts_compile_impl (ctx ):
60- result = _tsickle_action (ctx )
61-
6258 return [
6359 DefaultInfo (
64- files = depset (result . outputs ),
60+ files = depset (direct_outs ),
6561 ),
6662 ClosureTsCompileInfo (
67- sources = result .inputs ,
63+ direct_srcs = direct_srcs ,
64+ transitive_srcs = all_srcs ,
65+ direct_outs = depset (direct_outs ),
66+ transitive_outs = all_outs ,
6867 ),
6968 ]
7069
0 commit comments