35f79c37aa
Test: builds Change-Id: I404b138faac0db9a92201be6163b19d9e6bff810
102 lines
3.9 KiB
Go
102 lines
3.9 KiB
Go
// Copyright 2021 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
|
|
//
|
|
// http://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.
|
|
|
|
package compliance
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// LicenseCondition identifies a recognized license condition by setting the
|
|
// corresponding bit.
|
|
type LicenseCondition uint16
|
|
|
|
// LicenseConditionMask is a bitmask for the recognized license conditions.
|
|
const LicenseConditionMask = LicenseCondition(0x3ff)
|
|
|
|
const (
|
|
// UnencumberedCondition identifies public domain or public domain-
|
|
// like license that disclaims copyright.
|
|
UnencumberedCondition = LicenseCondition(0x0001)
|
|
// PermissiveCondition identifies a license without notice or other
|
|
// significant requirements.
|
|
PermissiveCondition = LicenseCondition(0x0002)
|
|
// NoticeCondition identifies a typical open-source license with only
|
|
// notice or attribution requirements.
|
|
NoticeCondition = LicenseCondition(0x0004)
|
|
// ReciprocalCondition identifies a license with requirement to share
|
|
// the module's source only.
|
|
ReciprocalCondition = LicenseCondition(0x0008)
|
|
// RestrictedCondition identifies a license with requirement to share
|
|
// all source code linked to the module's source.
|
|
RestrictedCondition = LicenseCondition(0x0010)
|
|
// RestrictedClasspathExceptionCondition identifies RestrictedCondition
|
|
// waived for dynamic linking from independent modules.
|
|
RestrictedClasspathExceptionCondition = LicenseCondition(0x0020)
|
|
// WeaklyRestrictedCondition identifies a RestrictedCondition waived
|
|
// for dynamic linking.
|
|
WeaklyRestrictedCondition = LicenseCondition(0x0040)
|
|
// ProprietaryCondition identifies a license with source privacy
|
|
// requirements.
|
|
ProprietaryCondition = LicenseCondition(0x0080)
|
|
// ByExceptionOnly identifies a license where policy requires product
|
|
// counsel review prior to use.
|
|
ByExceptionOnlyCondition = LicenseCondition(0x0100)
|
|
// NotAllowedCondition identifies a license with onerous conditions
|
|
// where policy prohibits use.
|
|
NotAllowedCondition = LicenseCondition(0x0200)
|
|
)
|
|
|
|
var (
|
|
// RecognizedConditionNames maps condition strings to LicenseCondition.
|
|
RecognizedConditionNames = map[string]LicenseCondition{
|
|
"unencumbered": UnencumberedCondition,
|
|
"permissive": PermissiveCondition,
|
|
"notice": NoticeCondition,
|
|
"reciprocal": ReciprocalCondition,
|
|
"restricted": RestrictedCondition,
|
|
"restricted_with_classpath_exception": RestrictedClasspathExceptionCondition,
|
|
"restricted_allows_dynamic_linking": WeaklyRestrictedCondition,
|
|
"proprietary": ProprietaryCondition,
|
|
"by_exception_only": ByExceptionOnlyCondition,
|
|
"not_allowed": NotAllowedCondition,
|
|
}
|
|
)
|
|
|
|
// Name returns the condition string corresponding to the LicenseCondition.
|
|
func (lc LicenseCondition) Name() string {
|
|
switch lc {
|
|
case UnencumberedCondition:
|
|
return "unencumbered"
|
|
case PermissiveCondition:
|
|
return "permissive"
|
|
case NoticeCondition:
|
|
return "notice"
|
|
case ReciprocalCondition:
|
|
return "reciprocal"
|
|
case RestrictedCondition:
|
|
return "restricted"
|
|
case RestrictedClasspathExceptionCondition:
|
|
return "restricted_with_classpath_exception"
|
|
case WeaklyRestrictedCondition:
|
|
return "restricted_allows_dynamic_linking"
|
|
case ProprietaryCondition:
|
|
return "proprietary"
|
|
case ByExceptionOnlyCondition:
|
|
return "by_exception_only"
|
|
case NotAllowedCondition:
|
|
return "not_allowed"
|
|
}
|
|
panic(fmt.Errorf("unrecognized license condition: %04x", lc))
|
|
}
|