#!/usr/bin/env bash # Compare licenses of Go dependencies against a whitelist. ###### script header ###### lib=$(realpath @@BASE_LIB@@) || exit 1 stat "${lib}" >> /dev/null || exit 1 # shellcheck source=../sh/lib.bash if ! source "${lib}"; then echo "Error: could not find import" exit 1 fi go=$(realpath @@GO@@) stat "${go}" >> /dev/null golicenses=$(realpath @@GO_LICENSES@@) stat "${golicenses}" >> /dev/null cd "${BUILD_WORKSPACE_DIRECTORY}" ###### script body ###### not_allowed() { echo "license not allowed for package: ${line}" err=1 } license_report() { PATH="$(dirname "${go}"):${PATH}" \ GOROOT=$(${go} env GOROOT) \ GOPATH=$(${go} env GOPATH) \ GOCACHE=$(${go} env GOCACHE) \ ${golicenses} report ./... | { while read -r line; do pkg=${line%%,*} lic=${line##*,} case ${lic} in Apache-2.0 | BSD-2-Clause | BSD-3-Clause | ISC | MIT) ;; MPL-2.0) case ${pkg} in github.com/siderolabs/talos/pkg/machinery/config/encoder) ;; github.com/letsencrypt/boulder) ;; github.com/hashicorp/*) ;; *) not_allowed ;; esac ;; AGPL-3.0) case ${pkg} in github.com/edgelesssys/constellation/v2) ;; github.com/edgelesssys/constellation/v2/operators/constellation-node-operator/v2/api/v1alpha1) ;; *) not_allowed ;; esac ;; Unknown) case ${pkg} in github.com/edgelesssys/go-tdx-qpl/*) ;; *) not_allowed ;; esac ;; *) echo "unknown license: ${line}" err=1 ;; esac done exit "${err}" } } ${go} mod download err=0 if test -v SILENT; then license_report 2> /dev/null else license_report fi