Use xtask for theme generation

This commit is contained in:
Piotr Osiewicz 2023-06-21 18:48:09 +02:00
parent 6e4439b4ca
commit 9aa7a50951
7 changed files with 122 additions and 17 deletions

2
.cargo/config.toml Normal file
View File

@ -0,0 +1,2 @@
[alias]
xtask = "run --package xtask --"

99
Cargo.lock generated
View File

@ -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"

View File

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

View File

@ -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();
}
}

12
crates/xtask/Cargo.toml Normal file
View File

@ -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

0
crates/xtask/src/cli.rs Normal file
View File

11
crates/xtask/src/main.rs Normal file
View File

@ -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();
}