aboutsummaryrefslogtreecommitdiff
path: root/rules/license/license_aspect.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'rules/license/license_aspect.bzl')
-rw-r--r--rules/license/license_aspect.bzl20
1 files changed, 17 insertions, 3 deletions
diff --git a/rules/license/license_aspect.bzl b/rules/license/license_aspect.bzl
index 2302137b..00a91f5b 100644
--- a/rules/license/license_aspect.bzl
+++ b/rules/license/license_aspect.bzl
@@ -1,4 +1,5 @@
load("@rules_license//rules:providers.bzl", "LicenseInfo")
+load("//build/bazel/rules:metadata.bzl", "MetadataFileInfo")
RuleLicensedDependenciesInfo = provider(
doc = """Rule's licensed dependencies.""",
@@ -14,9 +15,18 @@ def _maybe_expand(rule, transitive_licenses):
if hasattr(dep_info, "license_closure"):
transitive_licenses.append(dep_info.license_closure)
+def create_metadata_file_info(ctx):
+ if hasattr(ctx.rule.attr, "applicable_licenses"):
+ for lic in ctx.rule.attr.applicable_licenses:
+ files = lic.files.to_list()
+ if len(files) == 1 and files[0].basename == "METADATA":
+ return MetadataFileInfo(metadata_file = files[0])
+
+ return MetadataFileInfo(metadata_file = None)
+
def _rule_licenses_aspect_impl(_rule, ctx):
if ctx.rule.kind == "_license":
- return RuleLicensedDependenciesInfo()
+ return [RuleLicensedDependenciesInfo(), MetadataFileInfo()]
licenses = []
transitive_licenses = []
@@ -32,14 +42,18 @@ def _rule_licenses_aspect_impl(_rule, ctx):
for item in vlist:
if type(item) == "Target" and RuleLicensedDependenciesInfo in item:
_maybe_expand(item, transitive_licenses)
- return RuleLicensedDependenciesInfo(license_closure = depset(licenses, transitive = transitive_licenses))
+
+ return [
+ RuleLicensedDependenciesInfo(license_closure = depset(licenses, transitive = transitive_licenses)),
+ create_metadata_file_info(ctx),
+ ]
license_aspect = aspect(
doc = """Collect transitive license closure.""",
implementation = _rule_licenses_aspect_impl,
attr_aspects = ["*"],
apply_to_generating_rules = True,
- provides = [RuleLicensedDependenciesInfo],
+ provides = [RuleLicensedDependenciesInfo, MetadataFileInfo],
)
_license_kind_template = """