aboutsummaryrefslogtreecommitdiff
path: root/rules/private/gathering_providers.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'rules/private/gathering_providers.bzl')
-rw-r--r--rules/private/gathering_providers.bzl54
1 files changed, 54 insertions, 0 deletions
diff --git a/rules/private/gathering_providers.bzl b/rules/private/gathering_providers.bzl
new file mode 100644
index 0000000..1c3740f
--- /dev/null
+++ b/rules/private/gathering_providers.bzl
@@ -0,0 +1,54 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Providers for transitively gathering all license and package_info targets.
+
+Warning: This is private to the aspect that walks the tree. The API is subject
+to change at any release.
+"""
+
+LicensedTargetInfo = provider(
+ doc = """Lists the licenses directly used by a single target.""",
+ fields = {
+ "target_under_license": "Label: The target label",
+ "licenses": "list(label of a license rule)",
+ },
+)
+
+def licenses_info():
+ return provider(
+ doc = """The transitive set of licenses used by a target.""",
+ fields = {
+ "target_under_license": "Label: The top level target label.",
+ "deps": "depset(LicensedTargetInfo): The transitive list of dependencies that have licenses.",
+ "licenses": "depset(LicenseInfo)",
+ "traces": "list(string) - diagnostic for tracing a dependency relationship to a target.",
+ },
+ )
+
+# This provider is used by the aspect that is used by manifest() rules.
+TransitiveLicensesInfo = licenses_info()
+
+TransitiveMetadataInfo = provider(
+ doc = """The transitive set of licenses used by a target.""",
+ fields = {
+ "top_level_target": "Label: The top level target label we are examining.",
+ "other_metadata": "depset(ExperimentalMetatdataInfo)",
+ "licenses": "depset(LicenseInfo)",
+ "package_info": "depset(PackageInfo)",
+
+ "target_under_license": "Label: A target which will be associated with some licenses.",
+ "deps": "depset(LicensedTargetInfo): The transitive list of dependencies that have licenses.",
+ "traces": "list(string) - diagnostic for tracing a dependency relationship to a target.",
+ },
+)