6 releases

0.2.312 Aug 14, 2023
0.2.311 Apr 11, 2023
0.1.0 Mar 28, 2023

#108 in #openapi


Used in forem_openapi_client

MIT/Apache and AGPL-3.0-only

65KB
1.5K SLoC

openapi-lib-generator

A tool to generate Rust libraries from OpenAPI specifications using the OpenAPI Generator Rust code generator.

About

It is available as a binary or library.

Is this tool worth it?

There are other tools like this:

This differs from those by trying to generate self-updatable crates that include cargo-make makefiles so as not to have to keep using this generator.

Goal

Any crate generated by this generator should be mostly self-maintainable, including in its makefile all of the commands necessary to self-update to new versions as needed.

Progress

This tool can indeed generate code. There are, however, problems with the OpenAPI Generator's Rust generator.

Correctness

As of now, there may be syntactical errors in the generated code. (Notably, rustc error code e0412 (A used type name is not in scope)) There are PR requests pending on that repo to fix these problems, but the maintainers seem really busy.

FWIW, these errors may only happen if your OpenAPI specification is malformed, in which case, you're best off correcting the specification.

Edition

As of now, the generated code will be Rust 2018 edition. If the autogeneration CLI option is true (default), the CLI will try to update the edition automatically.

See the generated makefile for a task that also tries this. If using that option, the generated Cargo toml will require a manual update of the package.edition field.

Contributing

After making changes in the generator crate, run cargo make test-generate-with-local-path. This will try generating a crate with the OpenAPI Generator "Petstore" YAML spec.

Dependencies

~37–52MB
~769K SLoC