From 91c99baaf279e85b6584d0dfe6de2f34f7f6e515 Mon Sep 17 00:00:00 2001 From: Michael Sloan Date: Mon, 17 Feb 2025 00:48:28 -0700 Subject: [PATCH] Allowlist for APGL crates in `check-licenses` (#24998) Also makes `shellcheck` pass Release Notes: - N/A --- script/check-licenses | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/script/check-licenses b/script/check-licenses index 85dcca1760..af5d340c62 100755 --- a/script/check-licenses +++ b/script/check-licenses @@ -3,18 +3,41 @@ set -euo pipefail check_license () { - for license in "LICENSE-AGPL" "LICENSE-GPL" "LICENSE-APACHE"; do - if [[ -L "$1/$license" ]]; then + local dir="$1" + local allowed_licenses=() + local agpl_crates=("crates/collab" "crates/livekit_api") + + local is_agpl=false + for agpl_crate in "${agpl_crates[@]}"; do + if [[ "$dir" == "$agpl_crate" ]]; then + is_agpl=true + break + fi + done + + if [[ "$is_agpl" == true ]]; then + allowed_licenses=("LICENSE-AGPL") + else + allowed_licenses=("LICENSE-GPL" "LICENSE-APACHE") + fi + + for license in "${allowed_licenses[@]}"; do + if [[ -L "$dir/$license" ]]; then return 0 - elif [[ -e "$1/$license" ]]; then - echo "Error: $1/$license exists but is not a symlink." + elif [[ -e "$dir/$license" ]]; then + echo "Error: $dir/$license exists but is not a symlink." exit 1 fi done - echo "Error: $1 does not contain a license symlink" + + if [[ "$dir" == "crates/collab" ]]; then + echo "Error: $dir does not contain a LICENSE-AGPL symlink" + else + echo "Error: $dir does not contain a LICENSE-GPL or LICENSE-APACHE symlink" + fi exit 1 } -git ls-files **/*/Cargo.toml | while read cargo_toml; do - check_license $(dirname "$cargo_toml"); +git ls-files "**/*/Cargo.toml" | while read -r cargo_toml; do + check_license "$(dirname "$cargo_toml")" done