diff options
Diffstat (limited to 'rules/license/license_aspect.bzl')
-rw-r--r-- | rules/license/license_aspect.bzl | 20 |
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 = """ |