rules_license
rules_license copied to clipboard
Explore ways to have more package metadata providers.
This is in support of Renaming applicable_licenses to packge_metadata. Please read that plan first for context.
Licenses are still special because they need to go down to the license_kind, but other metadata (self-contained) providers can be gathered generically. This PR has two parallel implementations so we can explore the ramifactions of each.
The early attempt was to make PackageInfo a first class element, equal to LicensesInfo in the way we recursively gather it. The problem with that approach is that it requires you to scale licenses_core.bzl with each new type.
A different approach is to have a generic TransitiveMetadataInfo collector that can hold many different types of provider in it, as long as they all obey the same protocol for identifying their type. We pass a provider list to gather_licenses_info_common() to select what to include.
This way, a user adding a private metadata type only needs to add a new write-json capability for their custom provider. That is still a little ugly, but at least we can share gather_licenses_info_common().
DO NOT SUBMIT. Work in progress. This is more of an early design review.
Hi Bill. I just wanted to run this idea by you. It's not urgent. I want to hear what users say at BazelCon