Move the crate generator to cargo-progenitor (#476)

Co-authored-by: Adam Leventhal <ahl@oxide.computer>
This commit is contained in:
iliana etaoin 2023-05-17 09:46:17 -07:00 committed by GitHub
parent cbc5cd76da
commit 787cc14b64
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 63 additions and 21 deletions

24
Cargo.lock generated
View File

@ -200,6 +200,23 @@ dependencies = [
"url",
]
[[package]]
name = "cargo-progenitor"
version = "0.3.0"
dependencies = [
"anyhow",
"built",
"clap",
"openapiv3",
"progenitor",
"progenitor-client",
"progenitor-impl",
"project-root",
"rustfmt-wrapper",
"serde_json",
"serde_yaml",
]
[[package]]
name = "cc"
version = "1.0.72"
@ -1271,26 +1288,19 @@ dependencies = [
name = "progenitor"
version = "0.3.0"
dependencies = [
"anyhow",
"base64",
"built",
"chrono",
"clap",
"futures",
"openapiv3",
"percent-encoding",
"progenitor-client",
"progenitor-impl",
"progenitor-macro",
"project-root",
"rand",
"regress",
"reqwest",
"rustfmt-wrapper",
"schemars",
"serde",
"serde_json",
"serde_yaml",
"uuid",
]

View File

@ -1,5 +1,6 @@
[workspace]
members = [
"cargo-progenitor",
"example-build",
"example-macro",
"example-wasm",

View File

@ -150,7 +150,7 @@ however, the most manual way to use Progenitor.
Usage:
```
progenitor
cargo progenitor
Options:
-i INPUT OpenAPI definition document (JSON or YAML)
@ -161,7 +161,15 @@ Options:
For example:
`cargo run --bin progenitor -- -i sample_openapi/keeper.json -o keeper -n keeper -v 0.1.0`
```
cargo install cargo-progenitor
cargo progenitor -i sample_openapi/keeper.json -o keeper -n keeper -v 0.1.0
```
... or within the repo:
```
cargo run --bin cargo-progenitor -- progenitor -i sample_openapi/keeper.json -o keeper -n keeper -v 0.1.0
```
This will produce a package in the specified directory.

View File

@ -0,0 +1,26 @@
[package]
name = "cargo-progenitor"
version = "0.3.0"
edition = "2021"
license = "MPL-2.0"
description = "A cargo command to generate a Rust client SDK from OpenAPI"
repository = "https://github.com/oxidecomputer/progenitor.git"
readme = "../README.md"
keywords = ["openapi", "openapiv3", "sdk", "generator"]
categories = ["api-bindings", "development-tools::cargo-plugins"]
build = "build.rs"
[dependencies]
progenitor = { version = "0.3.0", path = "../progenitor" }
progenitor-client = { version = "0.3.0", path = "../progenitor-client" }
progenitor-impl = { version = "0.3.0", path = "../progenitor-impl" }
anyhow = "1.0"
clap = { version = "4.2.7", features = ["derive"] }
openapiv3 = "1.0.2"
rustfmt-wrapper = "0.2.0"
serde_json = "1.0"
serde_yaml = "0.9"
[build-dependencies]
built = { version = "0.6", features = ["git2"] }
project-root = "0.2"

View File

@ -23,6 +23,13 @@ fn release_is_unstable() -> bool {
!built_info::PKG_VERSION_PRE.is_empty() || built_info::GIT_VERSION.is_some()
}
#[derive(Parser)]
#[command(name = "cargo")]
#[command(bin_name = "cargo")]
enum CargoCli {
Progenitor(Args),
}
#[derive(Parser)]
struct Args {
/// OpenAPI definition document (JSON or YAML)
@ -111,7 +118,7 @@ where
}
fn main() -> Result<()> {
let args = Args::parse();
let CargoCli::Progenitor(args) = CargoCli::parse();
let api = load_api(&args.input)?;
let mut builder = Generator::new(

View File

@ -8,23 +8,12 @@ repository = "https://github.com/oxidecomputer/progenitor.git"
readme = "../README.md"
keywords = ["openapi", "openapiv3", "sdk", "generator", "proc_macro"]
categories = ["api-bindings", "compilers"]
build = "build.rs"
[dependencies]
progenitor-client = { version = "0.3.0", path = "../progenitor-client" }
progenitor-impl = { version = "0.3.0", path = "../progenitor-impl" }
progenitor-macro = { version = "0.3.0", path = "../progenitor-macro" }
anyhow = "1.0"
openapiv3 = "1.0.0"
rustfmt-wrapper = "0.2.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
clap = { version = "4.2.7", features = ["derive"] }
[build-dependencies]
built = { version = "0.6", features = ["git2"] }
project-root = "0.2"
[dev-dependencies]
base64 = "0.21"
@ -35,4 +24,5 @@ rand = "0.8"
regress = "0.6.0"
reqwest = { version = "0.11.17", features = ["json", "stream"] }
schemars = { version = "0.8.12", features = ["uuid1"] }
serde = { version = "1.0", features = ["derive"] }
uuid = { version = "1.3", features = ["serde", "v4"] }