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 = (
@@ -131,15 +132,16 @@ def _tf_web_library(ctx):
131
132
manifests = manifests ,
132
133
webpaths = webpaths ,
133
134
dummy = dummy ,
135
+ exports = export_deps ,
134
136
),
135
- unfurl (ctx .attr .exports ),
136
137
collect_js (
137
- unfurl (ctx . attr . deps , provider = ClosureJsLibraryInfo ). exports ,
138
+ unfurl (deps ) ,
138
139
ctx .files ._closure_library_base ,
139
140
),
140
141
DefaultInfo (
141
142
files = depset (web_srcs + [dummy ]),
142
- runfiles = ctx .runfiles (
143
+ runfiles = collect_runfiles (
144
+ ctx ,
143
145
files = (ctx .files .srcs +
144
146
ctx .files .data +
145
147
ctx .files ._closure_library_base + [
@@ -148,12 +150,7 @@ def _tf_web_library(ctx):
148
150
ctx .outputs .executable ,
149
151
dummy ,
150
152
]),
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
- ]),
153
+ extra_runfiles_attrs = ["export_deps" , "_WebfilesServer" ],
157
154
),
158
155
),
159
156
]
@@ -171,7 +168,7 @@ def _make_manifest(ctx, src_list):
171
168
172
169
def _run_webfiles_validator (ctx , srcs , deps , manifest ):
173
170
dummy = _new_file (ctx , "-webfiles.ignoreme" )
174
- manifests = depset (order = "postorder" , transitive = [dep [ WebFilesInfo ] .manifests for dep in deps ])
171
+ manifests = depset (order = "postorder" , transitive = [dep .manifests for dep in deps ])
175
172
if srcs :
176
173
args = [
177
174
"WebfilesValidator" ,
@@ -186,13 +183,12 @@ def _run_webfiles_validator(ctx, srcs, deps, manifest):
186
183
args .append (category )
187
184
inputs = [] # list of depsets
188
185
inputs .append (depset ([manifest ] + srcs ))
189
- direct_manifests = depset ([dep [ WebFilesInfo ] .manifest for dep in deps ])
186
+ direct_manifests = depset ([dep .manifest for dep in deps ])
190
187
for dep in deps :
191
- inputs .append (depset ([dep [WebFilesInfo ].dummy ]))
192
- inputs .append (dep .files )
193
- inputs .append (depset ([dep [WebFilesInfo ].manifest ]))
188
+ inputs .append (depset ([dep .dummy ]))
189
+ inputs .append (depset ([dep .manifest ]))
194
190
args .append ("--direct_dep" )
195
- args .append (dep [ WebFilesInfo ] .manifest .path )
191
+ args .append (dep .manifest .path )
196
192
for man in difference (manifests , direct_manifests ):
197
193
inputs .append (depset ([man ]))
198
194
args .append ("--transitive_dep" )
0 commit comments