ZIm/script/generate-licenses
Peter Tripp 2a6ef006f4
Make script/generate-license fail on WARN too (#34008)
Current main shows this on `script/generate-licenses`:
```
[WARN] failed to validate all files specified in clarification for crate ring 0.17.14: checksum mismatch, expected '76b39f9b371688eac9d8323f96ee80b3aef5ecbc2217f25377bd4e4a615296a9'
```

Ring fixed it's licenses ambiguity upstream. This warning was
identifying that their license text (multiple licenses concatenated) had
changed (sha mismatch) and thus our license clarification was invalid.

Tested the script to confirm this [now
fails](https://github.com/zed-industries/zed/actions/runs/16118890720/job/45479355992?pr=34008)
under CI and then removed the ring clarification because it is no longer
required and now passes.

Release Notes:

- N/A
2025-07-07 13:56:53 -04:00

55 lines
1.5 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
CARGO_ABOUT_VERSION="0.7"
OUTPUT_FILE="${1:-$(pwd)/assets/licenses.md}"
TEMPLATE_FILE="script/licenses/template.md.hbs"
fail_on_stderr() {
local tmpfile=$(mktemp)
"$@" 2> >(tee "$tmpfile" >&2)
local rc=$?
[ -s "$tmpfile" ] && rc=1
rm "$tmpfile"
return $rc
}
echo -n "" >"$OUTPUT_FILE"
{
echo -e "# ###### THEME LICENSES ######\n"
cat assets/themes/LICENSES
echo -e "\n# ###### ICON LICENSES ######\n"
cat assets/icons/LICENSES
echo -e "\n# ###### CODE LICENSES ######\n"
} >>"$OUTPUT_FILE"
if ! cargo about --version | grep "cargo-about $CARGO_ABOUT_VERSION" &>/dev/null; then
echo "Installing cargo-about@^$CARGO_ABOUT_VERSION..."
cargo install "cargo-about@^$CARGO_ABOUT_VERSION"
else
echo "cargo-about@^$CARGO_ABOUT_VERSION is already installed."
fi
echo "Generating cargo licenses"
if [ -z "${ALLOW_MISSING_LICENSES-}" ]; then FAIL_FLAG=--fail; else FAIL_FLAG=""; fi
set -x
fail_on_stderr cargo about generate \
$FAIL_FLAG \
-c script/licenses/zed-licenses.toml \
"$TEMPLATE_FILE" >>"$OUTPUT_FILE"
set +x
sed -i.bak 's/"/"/g' "$OUTPUT_FILE"
sed -i.bak 's/'/'\''/g' "$OUTPUT_FILE" # The ` '\'' ` thing ends the string, appends a single quote, and re-opens the string
sed -i.bak 's/=/=/g' "$OUTPUT_FILE"
sed -i.bak 's/`/`/g' "$OUTPUT_FILE"
sed -i.bak 's/&lt;/</g' "$OUTPUT_FILE"
sed -i.bak 's/&gt;/>/g' "$OUTPUT_FILE"
rm -rf "${OUTPUT_FILE}.bak"
echo "generate-licenses completed. See $OUTPUT_FILE"