1*f578df4fSJingwen Chen# Copyright 2022 Google LLC 2*f578df4fSJingwen Chen# 3*f578df4fSJingwen Chen# Licensed under the Apache License, Version 2.0 (the "License"); 4*f578df4fSJingwen Chen# you may not use this file except in compliance with the License. 5*f578df4fSJingwen Chen# You may obtain a copy of the License at 6*f578df4fSJingwen Chen# 7*f578df4fSJingwen Chen# https://www.apache.org/licenses/LICENSE-2.0 8*f578df4fSJingwen Chen# 9*f578df4fSJingwen Chen# Unless required by applicable law or agreed to in writing, software 10*f578df4fSJingwen Chen# distributed under the License is distributed on an "AS IS" BASIS, 11*f578df4fSJingwen Chen# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*f578df4fSJingwen Chen# See the License for the specific language governing permissions and 13*f578df4fSJingwen Chen# limitations under the License. 14*f578df4fSJingwen Chen"""Basic providers for license rules. 15*f578df4fSJingwen Chen 16*f578df4fSJingwen ChenThis file should only contain the basic providers needed to create 17*f578df4fSJingwen Chenlicense and package_info declarations. Providers needed to gather 18*f578df4fSJingwen Chenthem are declared in other places. 19*f578df4fSJingwen Chen""" 20*f578df4fSJingwen Chen 21*f578df4fSJingwen ChenLicenseKindInfo = provider( 22*f578df4fSJingwen Chen doc = """Provides information about a license_kind instance.""", 23*f578df4fSJingwen Chen fields = { 24*f578df4fSJingwen Chen "conditions": "list(string): List of conditions to be met when using this packages under this license.", 25*f578df4fSJingwen Chen "label": "Label: The full path to the license kind definition.", 26*f578df4fSJingwen Chen "long_name": "string: Human readable license name", 27*f578df4fSJingwen Chen "name": "string: Canonical license name", 28*f578df4fSJingwen Chen }, 29*f578df4fSJingwen Chen) 30*f578df4fSJingwen Chen 31*f578df4fSJingwen ChenLicenseInfo = provider( 32*f578df4fSJingwen Chen doc = """Provides information about a license instance.""", 33*f578df4fSJingwen Chen fields = { 34*f578df4fSJingwen Chen "copyright_notice": "string: Human readable short copyright notice", 35*f578df4fSJingwen Chen "label": "Label: label of the license rule", 36*f578df4fSJingwen Chen "license_kinds": "list(LicenseKindInfo): License kinds ", 37*f578df4fSJingwen Chen "license_text": "string: The license file path", 38*f578df4fSJingwen Chen "namespace": "string: namespace of the license rule", 39*f578df4fSJingwen Chen # TODO(aiuto): move to PackageInfo 40*f578df4fSJingwen Chen "package_name": "string: Human readable package name", 41*f578df4fSJingwen Chen "package_url": "URL from which this package was downloaded.", 42*f578df4fSJingwen Chen "package_version": "Human readable version string", 43*f578df4fSJingwen Chen }, 44*f578df4fSJingwen Chen) 45*f578df4fSJingwen Chen 46*f578df4fSJingwen ChenPackageInfo = provider( 47*f578df4fSJingwen Chen doc = """Provides information about a package.""", 48*f578df4fSJingwen Chen fields = { 49*f578df4fSJingwen Chen "type": "string: How to interpret data", 50*f578df4fSJingwen Chen "label": "Label: label of the package_info rule", 51*f578df4fSJingwen Chen "package_name": "string: Human readable package name", 52*f578df4fSJingwen Chen "package_url": "string: URL from which this package was downloaded.", 53*f578df4fSJingwen Chen "package_version": "string: Human readable version string", 54*f578df4fSJingwen Chen }, 55*f578df4fSJingwen Chen) 56*f578df4fSJingwen Chen 57*f578df4fSJingwen Chen# This is more extensible. Because of the provider implementation, having a big 58*f578df4fSJingwen Chen# dict of values rather than named fields is not much more costly. 59*f578df4fSJingwen Chen# Design choice. Replace data with actual providers, such as PackageInfo 60*f578df4fSJingwen ChenExperimentalMetadataInfo = provider( 61*f578df4fSJingwen Chen doc = """Generic bag of metadata.""", 62*f578df4fSJingwen Chen fields = { 63*f578df4fSJingwen Chen "type": "string: How to interpret data", 64*f578df4fSJingwen Chen "label": "Label: label of the metadata rule", 65*f578df4fSJingwen Chen "data": "String->any: Map of names to values", 66*f578df4fSJingwen Chen } 67*f578df4fSJingwen Chen) 68