jsontypedef / json-typedef-codegen

A CLI tool that generates code from JSON Typedef schemas
https://jsontypedef.com/docs/tools/jtd-codegen
MIT License
157 stars 31 forks source link

jtd-codegen crate is outdated on crates.io #33

Closed NotizMe closed 3 years ago

NotizMe commented 3 years ago

The crate at crates.io is still at version 0.2.0-beta.1.

https://crates.io/crates/jtd-codegen/versions

Would it be possible to update it?

ucarion commented 3 years ago

The crate you're referring to, known internally to this repo as jtd_codegen_core, isn't meant to be generally usable. The version published on Crates.io is from a previous design of the jtd-codegen codebase, where all code generation targets were in a single tool.

I'm afraid I can't at this time commit to maintaining a Rust interface to the jtd-codegen system. My recommendation, at least for now, is that you instead depend on the jtd-codegen binary, even if you're ultimately invoking it from build.rs.

Sorry for the inconvenience. I won't be yanking the published crate, because I'm sure some folks have come to depend on it. But it's not the recommended path, and I don't think using the crate directly is a documented option anywhere.

AdamLeyshon commented 3 years ago

That's a bummer. Being able to invoke from build.rs was a really nice feature to have, just like prost_build for Protobuf and Diesel migrations/schema inferal, I'll have to find another way to compile all my JTDs before cargo build

NotizMe commented 3 years ago

I don't know the Rust ecosystem at all, so I might have asked the wrong question. I'm actually just looking for a convenient way to get the jtd-codegen binary on my workstation and build agents.

With go I would do something along these lines

go run github.com/jsontypedef/json-typedef-codegen/cmd/cli

and the Go compiler would download the version noted in my go.mod file, compile it and run it.

In most other cases we'd use a package manager:

I'm just looking for a more reproducible and maintainable way to get the jtd-codegen binary. Anything that isn't "download the binary from this website and to update it, just overwrite it" basically 😉