Use xtask for theme generation

Piotr Osiewicz created

Change summary

.cargo/config.toml        |  2 
Cargo.lock                | 99 +++++++++++++++++++++++++++++++++++++++-
Cargo.toml                |  1 
crates/theme/src/theme.rs | 14 -----
crates/xtask/Cargo.toml   | 12 ++++
crates/xtask/src/cli.rs   |  0 
crates/xtask/src/main.rs  | 11 ++++
7 files changed, 122 insertions(+), 17 deletions(-)

Detailed changes

Cargo.lock 🔗

@@ -189,6 +189,55 @@ dependencies = [
  "libc",
 ]
 
+[[package]]
+name = "anstream"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is-terminal 0.4.7",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.48.0",
+]
+
 [[package]]
 name = "anyhow"
 version = "1.0.71"
@@ -1102,7 +1151,7 @@ dependencies = [
  "atty",
  "bitflags",
  "clap_derive",
- "clap_lex",
+ "clap_lex 0.2.4",
  "indexmap",
  "once_cell",
  "strsim",
@@ -1110,6 +1159,28 @@ dependencies = [
  "textwrap",
 ]
 
+[[package]]
+name = "clap"
+version = "4.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2686c4115cb0810d9a984776e197823d08ec94f176549a89a9efded477c456dc"
+dependencies = [
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e53afce1efce6ed1f633cf0e57612fe51db54a1ee4fd8f8503d078fe02d69ae"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "bitflags",
+ "clap_lex 0.5.0",
+ "strsim",
+]
+
 [[package]]
 name = "clap_derive"
 version = "3.2.25"
@@ -1132,12 +1203,18 @@ dependencies = [
  "os_str_bytes",
 ]
 
+[[package]]
+name = "clap_lex"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+
 [[package]]
 name = "cli"
 version = "0.1.0"
 dependencies = [
  "anyhow",
- "clap",
+ "clap 3.2.25",
  "core-foundation",
  "core-services",
  "dirs 3.0.2",
@@ -1247,7 +1324,7 @@ dependencies = [
  "axum-extra",
  "base64 0.13.1",
  "call",
- "clap",
+ "clap 3.2.25",
  "client",
  "collections",
  "ctor",
@@ -1342,6 +1419,12 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
 
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
 [[package]]
 name = "command_palette"
 version = "0.1.0"
@@ -8756,6 +8839,16 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
 
+[[package]]
+name = "xtask"
+version = "0.1.0"
+dependencies = [
+ "clap 4.3.5",
+ "schemars",
+ "serde_json",
+ "theme",
+]
+
 [[package]]
 name = "yaml-rust"
 version = "0.4.5"

Cargo.toml 🔗

@@ -66,6 +66,7 @@ members = [
     "crates/vim",
     "crates/workspace",
     "crates/welcome",
+    "crates/xtask",
     "crates/zed",
 ]
 default-members = ["crates/zed"]

crates/theme/src/theme.rs 🔗

@@ -1082,17 +1082,3 @@ pub struct Style {
     pub border: Color,
     pub foreground: Color,
 }
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-    use schemars::schema_for;
-
-    #[test]
-    fn export_schema() {
-        let theme = schema_for!(Theme);
-        let output = serde_json::to_string_pretty(&theme).unwrap();
-        std::fs::create_dir("schemas").ok();
-        std::fs::write("schemas/theme.json", output).ok();
-    }
-}

crates/xtask/Cargo.toml 🔗

@@ -0,0 +1,12 @@
+[package]
+name = "xtask"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+clap = "4.0"
+theme = {path = "../theme"}
+serde_json.workspace = true
+schemars.workspace = true

crates/xtask/src/main.rs 🔗

@@ -0,0 +1,11 @@
+mod cli;
+
+use schemars::schema_for;
+
+use theme::Theme;
+fn main() {
+    let theme = schema_for!(Theme);
+    let output = serde_json::to_string_pretty(&theme).unwrap();
+    std::fs::create_dir("schemas").ok();
+    std::fs::write("schemas/theme.json", output).ok();
+}