From 48c6eb9ac7a0cebc096cf576c163d054de41c92f Mon Sep 17 00:00:00 2001 From: Peter Tripp Date: Thu, 26 Sep 2024 16:21:20 -0400 Subject: [PATCH] Add script to generate license dependencies as csv (#18411) Co-authored-by: Joseph T. Lyons --- .gitignore | 2 +- script/generate-licenses | 6 ++++- script/generate-licenses-csv | 23 +++++++++++++++++++ script/licenses/template.csv.hbs | 6 +++++ .../{template.hbs.md => template.md.hbs} | 0 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100755 script/generate-licenses-csv create mode 100644 script/licenses/template.csv.hbs rename script/licenses/{template.hbs.md => template.md.hbs} (100%) diff --git a/.gitignore b/.gitignore index 634b73ac94..d19c5a102a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,7 @@ /crates/collab/seed.json /crates/zed/resources/flatpak/flatpak-cargo-sources.json /dev.zed.Zed*.json -/assets/*licenses.md +/assets/*licenses.* **/venv .build *.wasm diff --git a/script/generate-licenses b/script/generate-licenses index 43b2f5c458..9602813f0c 100755 --- a/script/generate-licenses +++ b/script/generate-licenses @@ -4,6 +4,7 @@ set -euo pipefail CARGO_ABOUT_VERSION="0.6.1" OUTPUT_FILE="${1:-$(pwd)/assets/licenses.md}" +TEMPLATE_FILE="script/licenses/template.md.hbs" > $OUTPUT_FILE @@ -23,7 +24,10 @@ else fi echo "Generating cargo licenses" -cargo about generate --fail -c script/licenses/zed-licenses.toml script/licenses/template.hbs.md >> $OUTPUT_FILE +cargo about generate \ + --fail \ + -c script/licenses/zed-licenses.toml \ + "${TEMPLATE_FILE}" >> $OUTPUT_FILE sed -i.bak 's/"/"/g' $OUTPUT_FILE diff --git a/script/generate-licenses-csv b/script/generate-licenses-csv new file mode 100755 index 0000000000..63bfee83a5 --- /dev/null +++ b/script/generate-licenses-csv @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -euo pipefail + +CARGO_ABOUT_VERSION="0.6.1" +OUTPUT_FILE="${1:-$(pwd)/assets/licenses.csv}" +TEMPLATE_FILE="script/licenses/template.csv.hbs" + +if ! cargo install --list | grep "cargo-about v$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" +cargo about generate \ + --fail \ + -c script/licenses/zed-licenses.toml \ + script/licenses/template.csv.hbs \ + | awk 'NR==1{print;next} NF{print | "sort"}' \ + > $OUTPUT_FILE +echo "Completed. See $OUTPUT_FILE" diff --git a/script/licenses/template.csv.hbs b/script/licenses/template.csv.hbs new file mode 100644 index 0000000000..1459aa648d --- /dev/null +++ b/script/licenses/template.csv.hbs @@ -0,0 +1,6 @@ +Crate Name,Crate Version,License,Url +{{#each licenses}} +{{#each used_by}} +{{crate.name}},{{crate.version}},{{../name}},{{#if crate.repository}}{{crate.repository}}{{else}}https://crates.io/crates/{{crate.name}}{{/if}} +{{/each}} +{{/each}} diff --git a/script/licenses/template.hbs.md b/script/licenses/template.md.hbs similarity index 100% rename from script/licenses/template.hbs.md rename to script/licenses/template.md.hbs