avoid regen client as build step

This commit is contained in:
Ruben Fiszel
2025-03-22 17:21:18 +01:00
parent 46797f0727
commit d0b38b54dc
13 changed files with 33403 additions and 304 deletions
+4 -267
View File
@@ -1322,7 +1322,7 @@ dependencies = [
"lazy_static",
"lazycell",
"log",
"prettyplease 0.2.31",
"prettyplease",
"proc-macro2",
"quote",
"regex",
@@ -1343,7 +1343,7 @@ dependencies = [
"clang-sys",
"itertools 0.13.0",
"log",
"prettyplease 0.2.31",
"prettyplease",
"proc-macro2",
"quote",
"regex",
@@ -1618,16 +1618,6 @@ dependencies = [
"num-traits",
]
[[package]]
name = "built"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b99c4cdc7b2c2364182331055623bdf45254fcb679fea565c40c3c11c101889a"
dependencies = [
"cargo-lock",
"git2",
]
[[package]]
name = "bumpalo"
version = "3.17.0"
@@ -1842,18 +1832,6 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "cargo-lock"
version = "9.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e11c675378efb449ed3ce8de78d75d0d80542fc98487c26aba28eb3b82feac72"
dependencies = [
"semver 1.0.26",
"serde",
"toml 0.7.8",
"url",
]
[[package]]
name = "cbc"
version = "0.1.2"
@@ -5368,19 +5346,6 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "git2"
version = "0.17.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b989d6a7ca95a362cf2cfc5ad688b3a467be1f87e480b8dad07fee8c79b0044"
dependencies = [
"bitflags 1.3.2",
"libc",
"libgit2-sys",
"log",
"url",
]
[[package]]
name = "gl_generator"
version = "0.14.0"
@@ -5586,15 +5551,6 @@ dependencies = [
"ahash 0.7.8",
]
[[package]]
name = "hashbrown"
version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
dependencies = [
"ahash 0.8.11",
]
[[package]]
name = "hashbrown"
version = "0.14.5"
@@ -6790,18 +6746,6 @@ dependencies = [
"cc",
]
[[package]]
name = "libgit2-sys"
version = "0.15.2+1.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a80df2e11fb4a61f4ba2ab42dbe7f74468da143f1a75c74e11dee7c813f694fa"
dependencies = [
"cc",
"libc",
"libz-sys",
"pkg-config",
]
[[package]]
name = "libloading"
version = "0.7.4"
@@ -8938,16 +8882,6 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5"
[[package]]
name = "prettyplease"
version = "0.1.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86"
dependencies = [
"proc-macro2",
"syn 1.0.109",
]
[[package]]
name = "prettyplease"
version = "0.2.31"
@@ -9085,25 +9019,6 @@ version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d"
[[package]]
name = "progenitor"
version = "0.3.0"
source = "git+https://github.com/oxidecomputer/progenitor?rev=3d96016ae8d422e90513b2d34fb5b63eeab30b01#3d96016ae8d422e90513b2d34fb5b63eeab30b01"
dependencies = [
"anyhow",
"built",
"clap",
"openapiv3",
"progenitor-client",
"progenitor-impl",
"progenitor-macro",
"project-root",
"rustfmt-wrapper",
"serde",
"serde_json",
"serde_yaml",
]
[[package]]
name = "progenitor-client"
version = "0.3.0"
@@ -9118,51 +9033,6 @@ dependencies = [
"serde_urlencoded",
]
[[package]]
name = "progenitor-impl"
version = "0.3.0"
source = "git+https://github.com/oxidecomputer/progenitor?rev=3d96016ae8d422e90513b2d34fb5b63eeab30b01#3d96016ae8d422e90513b2d34fb5b63eeab30b01"
dependencies = [
"getopts",
"heck 0.4.1",
"http 0.2.12",
"indexmap 1.9.3",
"openapiv3",
"proc-macro2",
"quote",
"regex",
"schemars",
"serde",
"serde_json",
"syn 2.0.100",
"thiserror 1.0.69",
"typify",
"unicode-ident",
]
[[package]]
name = "progenitor-macro"
version = "0.3.0"
source = "git+https://github.com/oxidecomputer/progenitor?rev=3d96016ae8d422e90513b2d34fb5b63eeab30b01#3d96016ae8d422e90513b2d34fb5b63eeab30b01"
dependencies = [
"openapiv3",
"proc-macro2",
"progenitor-impl",
"quote",
"schemars",
"serde",
"serde_json",
"serde_tokenstream",
"serde_yaml",
"syn 2.0.100",
]
[[package]]
name = "project-root"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8bccbff07d5ed689c4087d20d7307a52ab6141edeedf487c3876a55b86cf63df"
[[package]]
name = "prometheus"
version = "0.13.4"
@@ -9199,7 +9069,7 @@ dependencies = [
"multimap",
"once_cell",
"petgraph 0.7.1",
"prettyplease 0.2.31",
"prettyplease",
"prost",
"prost-types",
"regex",
@@ -9721,16 +9591,6 @@ version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "regress"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82a9ecfa0cb04d0b04dddb99b8ccf4f66bc8dfd23df694b398570bd8ae3a50fb"
dependencies = [
"hashbrown 0.13.2",
"memchr",
]
[[package]]
name = "rend"
version = "0.4.2"
@@ -10091,19 +9951,6 @@ dependencies = [
"semver 1.0.26",
]
[[package]]
name = "rustfmt-wrapper"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1adc9dfed5cc999077978cc7163b9282c5751c8d39827c4ea8c8c220ca5a440"
dependencies = [
"serde",
"tempfile",
"thiserror 1.0.69",
"toml 0.8.20",
"toolchain_find",
]
[[package]]
name = "rusticata-macros"
version = "4.1.0"
@@ -10473,12 +10320,10 @@ version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615"
dependencies = [
"chrono",
"dyn-clone",
"schemars_derive",
"serde",
"serde_json",
"uuid 1.16.0",
]
[[package]]
@@ -10598,9 +10443,6 @@ name = "semver"
version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
dependencies = [
"serde",
]
[[package]]
name = "semver-parser"
@@ -10770,18 +10612,6 @@ dependencies = [
"serde",
]
[[package]]
name = "serde_tokenstream"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64060d864397305347a78851c51588fd283767e7e7589829e8121d65512340f1"
dependencies = [
"proc-macro2",
"quote",
"serde",
"syn 2.0.100",
]
[[package]]
name = "serde_urlencoded"
version = "0.7.1"
@@ -10838,19 +10668,6 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "serde_yaml"
version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap 2.8.0",
"itoa",
"ryu",
"serde",
"unsafe-libyaml",
]
[[package]]
name = "serdect"
version = "0.2.0"
@@ -12852,18 +12669,6 @@ dependencies = [
"toml_edit 0.19.15",
]
[[package]]
name = "toml"
version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
"toml_edit 0.22.24",
]
[[package]]
name = "toml_datetime"
version = "0.6.8"
@@ -12893,8 +12698,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
dependencies = [
"indexmap 2.8.0",
"serde",
"serde_spanned",
"toml_datetime",
"winnow 0.7.4",
]
@@ -12932,19 +12735,6 @@ dependencies = [
"tracing",
]
[[package]]
name = "toolchain_find"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebc8c9a7f0a2966e1acdaf0461023d0b01471eeead645370cf4c3f5cff153f2a"
dependencies = [
"home",
"once_cell",
"regex",
"semver 1.0.26",
"walkdir",
]
[[package]]
name = "tower"
version = "0.4.13"
@@ -13300,50 +13090,6 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "typify"
version = "0.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6658d09e71bfe59e7987dc95ee7f71809fdb5793ab0cdc1503cc0073990484d"
dependencies = [
"typify-impl",
"typify-macro",
]
[[package]]
name = "typify-impl"
version = "0.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34d3bb47587b13edf526d6ed02bf360ecefe083ab47a4ef29fc43112828b2bef"
dependencies = [
"heck 0.4.1",
"log",
"proc-macro2",
"quote",
"regress",
"schemars",
"serde_json",
"syn 2.0.100",
"thiserror 1.0.69",
"unicode-ident",
]
[[package]]
name = "typify-macro"
version = "0.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3f7e627c18be12d53bc1f261830b9c2763437b6a86ac57293b9085af2d32ffe"
dependencies = [
"proc-macro2",
"quote",
"schemars",
"serde",
"serde_json",
"serde_tokenstream",
"syn 2.0.100",
"typify-impl",
]
[[package]]
name = "ulid"
version = "1.2.1"
@@ -13541,12 +13287,6 @@ dependencies = [
"subtle",
]
[[package]]
name = "unsafe-libyaml"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
[[package]]
name = "untrusted"
version = "0.7.1"
@@ -14261,14 +14001,11 @@ dependencies = [
"base64 0.22.1",
"chrono",
"openapiv3",
"prettyplease 0.1.25",
"progenitor",
"progenitor-client",
"rand 0.9.0",
"reqwest 0.11.27",
"serde",
"serde_json",
"syn 1.0.109",
"uuid 1.16.0",
]
@@ -14532,7 +14269,7 @@ dependencies = [
"regex",
"serde_json",
"syn 2.0.100",
"toml 0.7.8",
"toml",
"windmill-parser",
]
+1 -2
View File
@@ -1,7 +1,6 @@
use serde::de::DeserializeOwned;
use std::future::Future;
use std::{str::FromStr, sync::Arc};
use windmill_api_client::types::{NewScript, ScriptLang as NewScriptLanguage};
use windmill_common::KillpillSender;
#[cfg(feature = "enterprise")]
@@ -18,9 +17,9 @@ use tokio::sync::RwLock;
use tokio::time::{timeout, Duration};
use windmill_api_client::types::{CreateFlowBody, RawScript};
#[cfg(feature = "enterprise")]
use windmill_api_client::types::{EditSchedule, NewSchedule, ScriptArgs};
use windmill_api_client::types::{NewScript, ScriptLang as NewScriptLanguage};
use serde::Serialize;
use windmill_common::worker::WORKER_CONFIG;
-7
View File
@@ -3,7 +3,6 @@ name = "windmill-api-client"
version.workspace = true
authors.workspace = true
edition.workspace = true
build = "build.rs"
[lib]
name = "windmill_api_client"
@@ -21,9 +20,3 @@ rand.workspace = true
base64.workspace = true
openapiv3 = "=1.0.2"
[build-dependencies]
prettyplease = "0.1.25"
progenitor = { git = "https://github.com/oxidecomputer/progenitor", rev = "3d96016ae8d422e90513b2d34fb5b63eeab30b01" }
serde_json = "1.0"
syn = "1.0"
openapiv3 = "=1.0.2"
-24
View File
@@ -1,24 +0,0 @@
use std::{
env,
fs::{self, File},
path::Path,
process::Command,
};
fn main() {
let src = "../windmill-api/openapi.yaml";
println!("cargo:rerun-if-changed={}", src);
Command::new("sh").args(&["bundle.sh"]).status().unwrap();
let file = File::open("./bundled.json").unwrap();
let spec = serde_json::from_reader(file).unwrap();
let mut generator = progenitor::Generator::default();
let tokens = generator.generate_tokens(&spec).unwrap();
let ast = syn::parse2(tokens).unwrap();
let content = prettyplease::unparse(&ast);
let mut out_file = Path::new(&env::var("OUT_DIR").unwrap()).to_path_buf();
out_file.push("codegen.rs");
fs::write(out_file, content).unwrap();
}
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
cd build_cargo
cargo run --bin windmill_api_client_build
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
[package]
name = "windmill-api-client-build"
version = "0.1.0"
edition = "2021"
[[bin]]
name = "windmill_api_client_build"
path = "./main.rs"
[dependencies]
prettyplease = "0.1.25"
progenitor = { git = "https://github.com/oxidecomputer/progenitor", rev = "3d96016ae8d422e90513b2d34fb5b63eeab30b01" }
serde_json = "1.0"
syn = "1.0"
openapiv3 = "=1.0.2"
[workspace]
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
npx swagger-cli bundle ../../windmill-api/openapi.yaml > bundled.json
@@ -0,0 +1,32 @@
use std::{
fs::{self, File},
path::Path,
process::Command,
};
fn main() {
Command::new("sh").args(&["./bundle.sh"]).status().unwrap();
let file = File::open("./bundled.json").unwrap();
let mut spec: openapiv3::OpenAPI = serde_json::from_reader(file).unwrap();
spec.paths.paths.retain(|key, _| {
[
"/w/{workspace}/flows/create",
"/w/{workspace}/flows/get/{path}",
"/w/{workspace}/scripts/create",
"/workspaces/list",
"/w/{workspace}/schedules/create",
"/w/{workspace}/schedules/update/{path}",
]
.contains(&key.as_str())
});
let mut generator = progenitor::Generator::default();
let tokens = generator.generate_tokens(&spec).unwrap();
let ast = syn::parse2(tokens).unwrap();
let content = prettyplease::unparse(&ast);
let mut out_file = Path::new("../src").to_path_buf();
out_file.push("codegen.rs");
fs::write(out_file, content).unwrap();
}
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
npx swagger-cli bundle ../windmill-api/openapi.yaml > bundled.json
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,4 +1,4 @@
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
include!("./codegen.rs");
pub fn create_client(base_url: &str, token: String) -> Client {
let mut val = reqwest::header::HeaderValue::from_str(&format!("Bearer {token}"))