43 lines · 1.1 KB · Text
RawDownload
#!/usr/bin/env bash set -euo pipefail check_license () {    local dir="$1"    local allowed_licenses=()    local agpl_crates=("crates/collab")     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 "$dir/$license" ]]; then            echo "Error: $dir/$license exists but is not a symlink."            exit 1        fi    done     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 -r cargo_toml; do   check_license "$(dirname "$cargo_toml")"done