Add OpenAPI generation xtask

This commit is contained in:
Daniel Lundin 2024-12-11 21:12:24 +01:00
parent ac6a53fac9
commit a4097b7cc3
Signed by: dln
SSH key fingerprint: SHA256:dQy1Xj3UiqJYpKR5ggQ2bxgz4jCH8IF+k3AB8o0kmdI
14 changed files with 268 additions and 78 deletions

15
xtask/Cargo.toml Normal file
View file

@ -0,0 +1,15 @@
[package]
name = "xtask"
version = "0.0.0"
edition = "2021"
[[bin]]
name = "xtask"
test = false
doctest = false
[dependencies]
anyhow.workspace = true
clap = { workspace = true, features = ["derive"] }
patagia-controller = { path = "../controller" }
semver.workspace = true

30
xtask/src/main.rs Normal file
View file

@ -0,0 +1,30 @@
use anyhow::Result;
use clap::Parser;
use patagia_controller::api;
#[derive(Debug, Parser)]
#[command(name = "cargo xtask", about = "Extra tasks for Patagia Controller")]
enum Xtask {
/// Generate OpenAPI spec
OpenApi,
}
fn gen_openapi() -> Result<()> {
let api = api::api()?;
let openapi = api.openapi("Patagia Controller", semver::Version::new(1, 0, 0));
openapi.write(&mut std::io::stdout().lock())?;
Ok(())
}
fn main() -> Result<()> {
let xtask = Xtask::parse();
match xtask {
Xtask::OpenApi => {
gen_openapi()?;
}
}
Ok(())
}