#!/usr/bin/env bash

# Compare licenses of Go dependencies against a whitelist.

set -euo pipefail
shopt -s inherit_errexit

not_allowed() {
  echo "license not allowed for package: ${line}"
  err=1
}

err=0
go mod download

go-licenses csv ./... | {
  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/talos-systems/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) ;;

      *)
        not_allowed
        ;;
      esac
      ;;

    Unknown)
      case ${pkg} in
      *)
        not_allowed
        ;;
      esac
      ;;

    *)
      echo "unknown license: ${line}"
      err=1
      ;;
    esac

  done
  exit "${err}"
}
