2222 "@io_bazel_rules_closure//closure/private:defs.bzl" ,
2323 "CLOSURE_LIBRARY_BASE_ATTR" ,
2424 "CLOSURE_WORKER_ATTR" ,
25+ "ClosureJsLibraryInfo" ,
26+ "WebFilesInfo" ,
2527 "collect_js" ,
2628 "collect_runfiles" ,
2729 "difference" ,
@@ -49,10 +51,8 @@ def _tf_web_library(ctx):
4951 fail ("when \" *\" is suppressed no other items should be present" )
5052
5153 # process what came before
52- deps = unfurl (ctx .attr .deps , provider = "webfiles" )
53- webpaths = depset ()
54- for dep in deps :
55- webpaths = depset (transitive = [webpaths , dep .webfiles .webpaths ])
54+ deps = unfurl (ctx .attr .deps , provider = WebFilesInfo ).exports
55+ webpaths = depset (transitive = [dep [WebFilesInfo ].webpaths for dep in deps ])
5656
5757 # process what comes now
5858 manifest_srcs = []
@@ -93,11 +93,11 @@ def _tf_web_library(ctx):
9393 # If a rule exists purely to export other build rules, then it's
9494 # appropriate for the exported sources to be included in the
9595 # development web server.
96- export_deps = unfurl (ctx .attr .exports )
96+ export_deps = unfurl (ctx .attr .exports ). exports
9797 devserver_manifests = depset (
9898 order = "postorder" ,
9999 transitive = (
100- [manifests ] + [dep . webfiles .manifests for dep in export_deps ]
100+ [manifests ] + [dep [ WebFilesInfo ] .manifests for dep in export_deps ]
101101 ),
102102 )
103103 params = struct (
@@ -125,38 +125,38 @@ def _tf_web_library(ctx):
125125 # rule from rules_closure: because `tf_web_library`s may depend on
126126 # either other `tf_web_library`s or base `web_library`s, the
127127 # interfaces ~must be the same.
128- #
129- # buildozer: disable=rule-impl-return
130- return struct (
131- files = depset (web_srcs + [dummy ]),
132- exports = unfurl (ctx .attr .exports ),
133- webfiles = struct (
128+ return [
129+ WebFilesInfo (
134130 manifest = manifest ,
135131 manifests = manifests ,
136132 webpaths = webpaths ,
137133 dummy = dummy ,
138134 ),
139- closure_js_library = collect_js (
140- unfurl (ctx .attr .deps , provider = "closure_js_library" ),
135+ unfurl (ctx .attr .exports ),
136+ collect_js (
137+ unfurl (ctx .attr .deps , provider = ClosureJsLibraryInfo ).exports ,
141138 ctx .files ._closure_library_base ,
142139 ),
143- runfiles = ctx .runfiles (
144- files = (ctx .files .srcs +
145- ctx .files .data +
146- ctx .files ._closure_library_base + [
147- manifest ,
148- params_file ,
149- ctx .outputs .executable ,
150- dummy ,
151- ]),
152- transitive_files = depset (transitive = [
153- collect_runfiles ([ctx .attr ._WebfilesServer ]),
154- collect_runfiles (deps ),
155- collect_runfiles (export_deps ),
156- collect_runfiles (ctx .attr .data ),
157- ]),
140+ DefaultInfo (
141+ files = depset (web_srcs + [dummy ]),
142+ runfiles = ctx .runfiles (
143+ files = (ctx .files .srcs +
144+ ctx .files .data +
145+ ctx .files ._closure_library_base + [
146+ manifest ,
147+ params_file ,
148+ ctx .outputs .executable ,
149+ dummy ,
150+ ]),
151+ transitive_files = depset (transitive = [
152+ collect_runfiles ([ctx .attr ._WebfilesServer ]),
153+ collect_runfiles (deps ),
154+ collect_runfiles (export_deps ),
155+ collect_runfiles (ctx .attr .data ),
156+ ]),
157+ ),
158158 ),
159- )
159+ ]
160160
161161def _make_manifest (ctx , src_list ):
162162 manifest = _new_file (ctx , "-webfiles.pbtxt" )
@@ -171,9 +171,7 @@ def _make_manifest(ctx, src_list):
171171
172172def _run_webfiles_validator (ctx , srcs , deps , manifest ):
173173 dummy = _new_file (ctx , "-webfiles.ignoreme" )
174- manifests = depset (order = "postorder" )
175- for dep in deps :
176- manifests = depset (transitive = [manifests , dep .webfiles .manifests ])
174+ manifests = depset (order = "postorder" , transitive = [dep [WebFilesInfo ].manifests for dep in deps ])
177175 if srcs :
178176 args = [
179177 "WebfilesValidator" ,
@@ -188,17 +186,13 @@ def _run_webfiles_validator(ctx, srcs, deps, manifest):
188186 args .append (category )
189187 inputs = [] # list of depsets
190188 inputs .append (depset ([manifest ] + srcs ))
191- direct_manifests = depset ()
189+ direct_manifests = depset ([ dep [ WebFilesInfo ]. manifest for dep in deps ] )
192190 for dep in deps :
193- inputs .append (depset ([dep . webfiles .dummy ]))
191+ inputs .append (depset ([dep [ WebFilesInfo ] .dummy ]))
194192 inputs .append (dep .files )
195- direct_manifests = depset (
196- [dep .webfiles .manifest ],
197- transitive = [direct_manifests ],
198- )
199- inputs .append (depset ([dep .webfiles .manifest ]))
193+ inputs .append (depset ([dep [WebFilesInfo ].manifest ]))
200194 args .append ("--direct_dep" )
201- args .append (dep . webfiles .manifest .path )
195+ args .append (dep [ WebFilesInfo ] .manifest .path )
202196 for man in difference (manifests , direct_manifests ):
203197 inputs .append (depset ([man ]))
204198 args .append ("--transitive_dep" )
0 commit comments