diff --git a/check_licenses.sh b/check_licenses.sh index c02b162..aad8cd3 100755 --- a/check_licenses.sh +++ b/check_licenses.sh @@ -1,4 +1,38 @@ #!/bin/sh -# Depends on: `rg` (ripgrep) -! rg --multiline --files-without-match --glob '*.rs' --pcre2 '(?/dev/null 2>&1; then + printf "%s: Missing dependency: tomcat(1)\n" + exit 69 # sysexits(3) EX_UNAVAILABLE +fi + +dir="$(pwd | sed 's/\//\n/g' | tail -n 1)" + +for toml in $(find "$PWD" -name "Cargo.toml"); do + printf "Project: %s\n" "$(tomcat package.name "$toml")" + for file in $(find "$(printf "%s\n" "$toml" |\ + sed 's/Cargo\.toml/src/g')" -name "*.rs") + do + info="$(head -n 2 "$file")" + toml_lic="$(tomcat package.license "$toml")" + if ! test -n "$toml_lic"; then + printf "%s: Missing license information\n" "$(printf "%s\n" "$toml" |\ + sed "s/^.\+$dir\///g")" + continue 2 + fi + if ! [ "$toml_lic" = "$(printf "%s\n" "$info" | tail -n 1 |\ + sed -n 's/\/\/ SPDX-License-Identifier: //p')" ] + then + printf "%s: Missing or malformed license information\n" \ + "$(printf "%s\n" "$file" | sed "s/^.\+$dir\///g")" + fi + if ! test -n "$(printf "%s\n" "$info" | head -n 1 |\ + sed -n '/\/\/ Copyright (c) .\+/p')" + then + printf "%s: Missing or malformed copyright holder information\n" \ + "$(printf "%s\n" "$file" | sed "s/^.\+$dir\///g")" + fi + done +done