27
27
"collect_js" ,
28
28
"collect_runfiles" ,
29
29
"difference" ,
30
+ "extract_providers" ,
30
31
"long_path" ,
31
32
"unfurl" ,
32
33
)
@@ -51,8 +52,8 @@ def _tf_web_library(ctx):
51
52
fail ("when \" *\" is suppressed no other items should be present" )
52
53
53
54
# process what came before
54
- deps = unfurl (ctx .attr .deps , provider = WebFilesInfo ). exports
55
- webpaths = depset (transitive = [dep [ WebFilesInfo ] .webpaths for dep in deps ])
55
+ deps = extract_providers (ctx .attr .deps , provider = WebFilesInfo )
56
+ webpaths = depset (transitive = [dep .webpaths for dep in deps ])
56
57
57
58
# process what comes now
58
59
manifest_srcs = []
@@ -93,7 +94,7 @@ def _tf_web_library(ctx):
93
94
# If a rule exists purely to export other build rules, then it's
94
95
# appropriate for the exported sources to be included in the
95
96
# development web server.
96
- export_deps = unfurl (ctx .attr .exports ). exports
97
+ export_deps = unfurl (extract_providers ( ctx .attr .exports ))
97
98
devserver_manifests = depset (
98
99
order = "postorder" ,
99
100
transitive = (
@@ -150,15 +151,16 @@ def _tf_web_library(ctx):
150
151
manifests = manifests ,
151
152
webpaths = webpaths ,
152
153
dummy = dummy ,
154
+ exports = export_deps ,
153
155
),
154
- unfurl (ctx .attr .exports ),
155
156
collect_js (
156
- unfurl (ctx . attr . deps , provider = ClosureJsLibraryInfo ). exports ,
157
+ unfurl (deps ) ,
157
158
ctx .files ._closure_library_base ,
158
159
),
159
160
DefaultInfo (
160
161
files = depset (web_srcs + [dummy ]),
161
- runfiles = ctx .runfiles (
162
+ runfiles = collect_runfiles (
163
+ ctx ,
162
164
files = (ctx .files .srcs +
163
165
ctx .files .data +
164
166
ctx .files ._closure_library_base + [
@@ -167,12 +169,7 @@ def _tf_web_library(ctx):
167
169
ctx .outputs .executable ,
168
170
dummy ,
169
171
]),
170
- transitive_files = depset (transitive = [
171
- collect_runfiles ([ctx .attr ._WebfilesServer ]),
172
- collect_runfiles (deps ),
173
- collect_runfiles (export_deps ),
174
- collect_runfiles (ctx .attr .data ),
175
- ]),
172
+ extra_runfiles_attrs = ["export_deps" , "_WebfilesServer" ],
176
173
),
177
174
),
178
175
]
@@ -190,7 +187,7 @@ def _make_manifest(ctx, src_list):
190
187
191
188
def _run_webfiles_validator (ctx , srcs , deps , manifest ):
192
189
dummy = _new_file (ctx , "-webfiles.ignoreme" )
193
- manifests = depset (order = "postorder" , transitive = [dep [ WebFilesInfo ] .manifests for dep in deps ])
190
+ manifests = depset (order = "postorder" , transitive = [dep .manifests for dep in deps ])
194
191
if srcs :
195
192
args = [
196
193
"WebfilesValidator" ,
@@ -205,13 +202,12 @@ def _run_webfiles_validator(ctx, srcs, deps, manifest):
205
202
args .append (category )
206
203
inputs = [] # list of depsets
207
204
inputs .append (depset ([manifest ] + srcs ))
208
- direct_manifests = depset ([dep [ WebFilesInfo ] .manifest for dep in deps ])
205
+ direct_manifests = depset ([dep .manifest for dep in deps ])
209
206
for dep in deps :
210
- inputs .append (depset ([dep [WebFilesInfo ].dummy ]))
211
- inputs .append (dep .files )
212
- inputs .append (depset ([dep [WebFilesInfo ].manifest ]))
207
+ inputs .append (depset ([dep .dummy ]))
208
+ inputs .append (depset ([dep .manifest ]))
213
209
args .append ("--direct_dep" )
214
- args .append (dep [ WebFilesInfo ] .manifest .path )
210
+ args .append (dep .manifest .path )
215
211
for man in difference (manifests , direct_manifests ):
216
212
inputs .append (depset ([man ]))
217
213
args .append ("--transitive_dep" )
0 commit comments