| # 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.", |
| }, |
| ) |