In > 7.10.0 regression was introduced breaking our build process. This commit reverts the change and fixes tests Signed-off-by: pyranota <pyra@duck.com>
83 lines
2.5 KiB
Nu
Executable File
83 lines
2.5 KiB
Nu
Executable File
#! /usr/bin/env nu
|
|
|
|
let version = open ../version.txt | str trim;
|
|
|
|
def main [ --publish(-p) --check(-c) --test(-t) ] {
|
|
mkdir api/a/
|
|
|
|
open ../backend/windmill-api/openapi.yaml
|
|
# openapi-generator confused with these two, so we just drop them
|
|
| reject paths."/w/{workspace}/apps/create_raw"
|
|
| reject paths."/w/{workspace}/apps/update_raw/{path}"
|
|
| save -f api/openapi.yaml;
|
|
|
|
openapi-generator-cli generate -i api/openapi.yaml -g rust -o ./windmill_api --strict-spec true --additional-properties=packageName="windmill-api"
|
|
|
|
# Patch Cargo.toml
|
|
open Cargo.proto.toml
|
|
| update package.version $version
|
|
| update dependencies.windmill-api.version $version
|
|
| save -f Cargo.toml
|
|
|
|
# Patch windmill_api/Cargo.toml
|
|
open windmill_api/Cargo.toml
|
|
# Use rustls - otherwise compilation will fail due to missing libssl
|
|
| update dependencies.reqwest.features [json, multipart, rustls-tls]
|
|
| insert dependencies.reqwest.default-features false
|
|
| update package.license "Apache-2.0"
|
|
| insert package.homepage "https://windmill.dev"
|
|
| save -f windmill_api/Cargo.toml
|
|
|
|
# Recursively replace serde_json::from_str with our patched version
|
|
ls ./windmill_api/src/**/*.rs
|
|
| each { |file|
|
|
let path = $file.name
|
|
open $path
|
|
| str replace --all "serde_json::from_str" "crate::from_str_patched/* Externally injected from /build.nu */"
|
|
| save -f $path
|
|
}
|
|
|
|
# Inject patched from_str
|
|
echo `
|
|
// NOTE: Injected by rust-client/dev.nu
|
|
pub fn from_str_patched<'a, T>(s: &'a str) -> Result<T, serde_json::Error>
|
|
where
|
|
T: serde::de::DeserializeOwned + 'static,
|
|
{
|
|
if std::any::TypeId::of::<T>() == std::any::TypeId::of::<String>()
|
|
|| std::any::TypeId::of::<T>() == std::any::TypeId::of::<uuid::Uuid>() {
|
|
// unsafe { std::mem::transmute::<&str, T>(s) }
|
|
// Quote string
|
|
let a = format!("\"{}\"", s.replace('"', r#"\""#));
|
|
serde_json::from_str(&a)
|
|
} else {
|
|
serde_json::from_str(s)
|
|
}
|
|
}
|
|
` | save --append ./windmill_api/src/lib.rs
|
|
|
|
if $check {
|
|
print "Checking..."
|
|
cargo check --no-default-features
|
|
cargo check --features "async"
|
|
}
|
|
|
|
if $test {
|
|
print "Testing..."
|
|
cargo test --features async simple
|
|
cargo test --no-default-features
|
|
}
|
|
|
|
if $publish {
|
|
print "Publishing..."
|
|
|
|
print Publishing windmill-api
|
|
cd windmill_api
|
|
cargo publish --token $env.CRATES_IO_TOKEN --allow-dirty
|
|
|
|
print Publishing wmill
|
|
cd ../
|
|
cargo publish --token $env.CRATES_IO_TOKEN --allow-dirty
|
|
}
|
|
}
|