blob: 3be7a125079a83482851f364dd4f1269e2caca43 [file] [log] [blame]
Han-Wen Nienhuys888f4ac2016-11-13 10:34:18 -08001def _classpath_collector(ctx):
David Ostrovskyaf398272019-03-03 10:22:00 +01002 all = []
Han-Wen Nienhuys888f4ac2016-11-13 10:34:18 -08003 for d in ctx.attr.deps:
David Ostrovsky09c905e2019-09-09 20:53:31 +02004 if JavaInfo in d:
5 all.append(d[JavaInfo].transitive_runtime_deps)
Marco Miller444d3322019-09-10 10:28:55 -04006 if hasattr(d[JavaInfo].compilation_info, "runtime_classpath"):
7 all.append(d[JavaInfo].compilation_info.runtime_classpath)
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +02008 elif hasattr(d, "files"):
David Ostrovskyaf398272019-03-03 10:22:00 +01009 all.append(d.files)
Han-Wen Nienhuys888f4ac2016-11-13 10:34:18 -080010
David Ostrovskyaf398272019-03-03 10:22:00 +010011 as_strs = [c.path for c in depset(transitive = all).to_list()]
David Ostrovsky930f29e2019-01-08 23:11:59 +010012 ctx.actions.write(
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020013 output = ctx.outputs.runtime,
14 content = "\n".join(sorted(as_strs)),
15 )
Han-Wen Nienhuys888f4ac2016-11-13 10:34:18 -080016
Han-Wen Nienhuys888f4ac2016-11-13 10:34:18 -080017classpath_collector = rule(
Han-Wen Nienhuys888f4ac2016-11-13 10:34:18 -080018 attrs = {
19 "deps": attr.label_list(),
20 },
David Pursehouse2d085002016-12-11 19:00:10 +090021 outputs = {
22 "runtime": "%{name}.runtime_classpath",
23 },
24 implementation = _classpath_collector,
25)