Added complete scripts for generating third party license files

Mikayla Maki created

Change summary

assets/licenses.md                   |  2 
crates/activity_indicator/Cargo.toml |  1 
crates/assets/Cargo.toml             |  1 
crates/auto_update/Cargo.toml        |  1 
crates/breadcrumbs/Cargo.toml        |  1 
crates/call/Cargo.toml               |  1 
crates/cli/Cargo.toml                |  1 
crates/client/Cargo.toml             |  1 
crates/clock/Cargo.toml              |  1 
crates/collab/Cargo.toml             |  1 
crates/collab_ui/Cargo.toml          |  1 
crates/collections/Cargo.toml        |  1 
crates/command_palette/Cargo.toml    |  1 
crates/context_menu/Cargo.toml       |  1 
crates/db/Cargo.toml                 |  1 
crates/diagnostics/Cargo.toml        |  1 
crates/drag_and_drop/Cargo.toml      |  1 
crates/editor/Cargo.toml             |  1 
crates/file_finder/Cargo.toml        |  1 
crates/fs/Cargo.toml                 |  1 
crates/fsevent/Cargo.toml            |  1 
crates/fuzzy/Cargo.toml              |  1 
crates/git/Cargo.toml                |  1 
crates/go_to_line/Cargo.toml         |  1 
crates/gpui/Cargo.toml               |  1 
crates/gpui_macros/Cargo.toml        |  1 
crates/journal/Cargo.toml            |  1 
crates/language/Cargo.toml           |  1 
crates/live_kit_client/Cargo.toml    |  1 
crates/live_kit_server/Cargo.toml    |  1 
crates/lsp/Cargo.toml                |  1 
crates/media/Cargo.toml              |  1 
crates/menu/Cargo.toml               |  1 
crates/outline/Cargo.toml            |  1 
crates/picker/Cargo.toml             |  1 
crates/plugin/Cargo.toml             |  1 
crates/plugin_macros/Cargo.toml      |  1 
crates/plugin_runtime/Cargo.toml     |  1 
crates/project/Cargo.toml            |  1 
crates/project_panel/Cargo.toml      |  1 
crates/project_symbols/Cargo.toml    |  1 
crates/recent_projects/Cargo.toml    |  1 
crates/rope/Cargo.toml               |  1 
crates/rpc/Cargo.toml                |  1 
crates/search/Cargo.toml             |  1 
crates/settings/Cargo.toml           |  1 
crates/snippet/Cargo.toml            |  1 
crates/sqlez/Cargo.toml              |  1 
crates/sqlez_macros/Cargo.toml       |  1 
crates/sum_tree/Cargo.toml           |  1 
crates/terminal/Cargo.toml           |  1 
crates/terminal_view/Cargo.toml      |  1 
crates/text/Cargo.toml               |  1 
crates/theme/Cargo.toml              |  1 
crates/theme_selector/Cargo.toml     |  1 
crates/theme_testbench/Cargo.toml    |  1 
crates/util/Cargo.toml               |  1 
crates/vim/Cargo.toml                |  1 
crates/workspace/Cargo.toml          |  1 
crates/zed/Cargo.toml                |  1 
script/collect-licenses.rs           | 17 -------------
script/generate-licenses             | 10 ++++++++
script/licenses/template.hbs.md      | 27 +++++++++++++++++++++
script/licenses/zed-licenses.toml    | 37 ++++++++++++++++++++++++++++++
styles/src/themes/one-light.ts       | 18 +++++++-------
65 files changed, 143 insertions(+), 27 deletions(-)

Detailed changes

crates/assets/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "assets"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/assets.rs"

crates/call/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "call"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/call.rs"

crates/cli/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "cli"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/cli.rs"

crates/client/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "client"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/client.rs"

crates/clock/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "clock"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/clock.rs"

crates/collab/Cargo.toml 🔗

@@ -4,6 +4,7 @@ default-run = "collab"
 edition = "2021"
 name = "collab"
 version = "0.5.3"
+publish = false
 
 [[bin]]
 name = "collab"

crates/db/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "db"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/db.rs"

crates/editor/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "editor"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/editor.rs"

crates/fs/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "fs"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/fs.rs"

crates/fsevent/Cargo.toml 🔗

@@ -3,6 +3,7 @@ name = "fsevent"
 version = "2.0.2"
 license = "MIT"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/fsevent.rs"

crates/fuzzy/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "fuzzy"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/fuzzy.rs"

crates/git/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "git"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/git.rs"

crates/gpui/Cargo.toml 🔗

@@ -4,6 +4,7 @@ edition = "2021"
 name = "gpui"
 version = "0.1.0"
 description = "A GPU-accelerated UI framework"
+publish = false
 
 [lib]
 path = "src/gpui.rs"

crates/journal/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "journal"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/journal.rs"

crates/language/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "language"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/language.rs"

crates/live_kit_client/Cargo.toml 🔗

@@ -3,6 +3,7 @@ name = "live_kit_client"
 version = "0.1.0"
 edition = "2021"
 description = "Bindings to LiveKit Swift client SDK"
+publish = false
 
 [lib]
 path = "src/live_kit_client.rs"

crates/live_kit_server/Cargo.toml 🔗

@@ -3,6 +3,7 @@ name = "live_kit_server"
 version = "0.1.0"
 edition = "2021"
 description = "SDK for the LiveKit server API"
+publish = false
 
 [lib]
 path = "src/live_kit_server.rs"

crates/lsp/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "lsp"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/lsp.rs"

crates/media/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "media"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/media.rs"

crates/menu/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "menu"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/menu.rs"

crates/outline/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "outline"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/outline.rs"

crates/picker/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "picker"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/picker.rs"

crates/plugin/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "plugin"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [dependencies]
 serde = "1.0"

crates/project/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "project"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/project.rs"

crates/rope/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "rope"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/rope.rs"

crates/rpc/Cargo.toml 🔗

@@ -3,6 +3,7 @@ description = "Shared logic for communication between the Zed app and the zed.de
 edition = "2021"
 name = "rpc"
 version = "0.1.0"
+publish = false
 
 [lib]
 path = "src/rpc.rs"

crates/search/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "search"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/search.rs"

crates/settings/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "settings"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/settings.rs"

crates/snippet/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "snippet"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/snippet.rs"

crates/sqlez/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "sqlez"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 

crates/sum_tree/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "sum_tree"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/sum_tree.rs"

crates/terminal/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "terminal"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/terminal.rs"

crates/text/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "text"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/text.rs"

crates/theme/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "theme"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/theme.rs"

crates/util/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "util"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 doctest = false

crates/vim/Cargo.toml 🔗

@@ -2,6 +2,7 @@
 name = "vim"
 version = "0.1.0"
 edition = "2021"
+publish = false
 
 [lib]
 path = "src/vim.rs"

crates/zed/Cargo.toml 🔗

@@ -4,6 +4,7 @@ description = "The fast, collaborative code editor."
 edition = "2021"
 name = "zed"
 version = "0.71.0"
+publish = false
 
 [lib]
 name = "zed"

script/collect-licenses.rs 🔗

@@ -1,17 +0,0 @@
-//usr/bin/env rustc $0 -o a.out && ./a.out ; rm -f ./a.out ; exit
-
-fn main() {
-    println!("Hello world");
-
-    
-}
-
-// Next steps:
-// 1a. Add wiring in Zed to check for a licenses markdown file
-// 1b. Add wiring in Zed.dev for builds to publish licenses alongside releases as well as licenses for Zed.dev itself
-//     (e.g. https://github.com/zed-industries/zed.dev/tree/main/content/licenses)
-// 2. Figure out how to run those commands and get the license text for each MIT and Apache licensed software
-// 3. Add in the configuration file:
-//      a. and refactor this script to have types of licenses
-//      b. add callback handlers for each type,
-//      c. check if the handler succeeds

script/generate-licenses 🔗

@@ -0,0 +1,10 @@
+#!/bin/bash
+cargo about generate --workspace -o assets/licenses.md -c script/licenses/zed-licenses.toml script/licenses/template.hbs.md
+
+# cargo about automatically html-escapes all output, so we need to undo it here: 
+sed -i '' 's/"/"/g' assets/licenses.md
+sed -i '' 's/'/'\''/g' assets/licenses.md # `'\''` ends the string, appends a single quote, and re-opens the string
+sed -i '' 's/=/=/g' assets/licenses.md
+sed -i '' 's/`/`/g' assets/licenses.md
+sed -i '' 's/&lt;/</g' assets/licenses.md
+sed -i '' 's/&gt;/>/g' assets/licenses.md

script/licenses/template.hbs.md 🔗

@@ -0,0 +1,27 @@
+# Third Party Licenses
+
+This page lists the licenses of the projects used in Zed.
+
+## Overview of licenses:
+
+{{#each overview}}
+* {{name}} ({{count}})
+{{/each}}
+
+## All license texts:
+
+{{#each licenses}}
+
+### {{name}}
+  
+#### Used by:
+
+{{#each used_by}}
+* [{{crate.name}} {{crate.version}}]({{#if crate.repository}} {{crate.repository}} {{else}} https://crates.io/crates/{{crate.name}} {{/if}})
+{{/each}}
+ 
+{{text}}
+
+--------------------------------------------------------------------------------
+           
+{{/each}}

script/licenses/zed-licenses.toml 🔗

@@ -0,0 +1,37 @@
+no-clearly-defined = true
+private = { ignore = true }
+accepted = [
+    "Apache-2.0",
+    "MIT",
+    "Apache-2.0 WITH LLVM-exception",
+    "MPL-2.0",
+    "BSD-3-Clause",
+    "BSD-2-Clause",
+    "ISC",
+    "CC0-1.0",
+    "Unicode-DFS-2016",
+    "OpenSSL",
+    "Zlib",
+]
+workarounds = [
+    "ring",
+    "wasmtime",
+]
+
+[procinfo.clarify]
+license = "MIT"
+[[procinfo.clarify.git]]
+path = 'LICENSE.md'
+checksum = '37db33bbbd7348969eda397b89a16f252d56c1ca7481b6ccaf56ccdcbab5dcca'
+
+[webpki.clarify]
+license = "ISC" # It actually says 'ISC-style' but I don't know the SPDX expression for that.
+[[webpki.clarify.files]]
+path = 'LICENSE'
+checksum = '5b698ca13897be3afdb7174256fa1574f8c6892b8bea1a66dd6469d3fe27885a'
+
+[fuchsia-cprng.clarify]
+license = "BSD-3-Clause"
+[[fuchsia-cprng.clarify.files]]
+path = 'LICENSE'
+checksum = '03b114f53e6587a398931762ee11e2395bfdba252a329940e2c8c9e81813845b'

styles/src/themes/one-light.ts 🔗

@@ -11,15 +11,15 @@ const license = {
 
 export const light = createColorScheme(`${name}`, true, {
   neutral: chroma.scale([
-      "#090a0b",
-      "#202227",
-      "#383a42",
-      "#696c77",
-      "#a0a1a7",
-      "#e5e5e6",
-      "#f0f0f1",
-      "#fafafa",
-    ])
+    "#090a0b",
+    "#202227",
+    "#383a42",
+    "#696c77",
+    "#a0a1a7",
+    "#e5e5e6",
+    "#f0f0f1",
+    "#fafafa",
+  ])
     .domain([0.05, 0.22, 0.25, 0.45, 0.62, 0.8, 0.9, 1]),
 
   red: colorRamp(chroma("#ca1243")),