#openapi #codegen #api #contract-first #template-generator #api-first

bin+lib codegenr

Fast json/yaml/openapi code generator based on handlebars templating

1 unstable release

0.0.2 Jan 26, 2022
0.0.1 Dec 14, 2021

#1955 in Development tools

GPL-3.0-or-later

160KB
3.5K SLoC

CodeGenR

codegenr graphical explanation

Installation

Install Rust : https://www.rust-lang.org/tools/install. And then install codegenr

cargo install codegenr

or install the development version

cargo install --git https://github.com/eventuallyconsultant/codegenr --branch dev

Documentation

codegenr documentation on docs.rs

The defaults Handlebars helpers are documented here.

Contribute

You can also open the repository in GitPod with this button Open in Gitpod

In the command line you can :

  • cargo test --workspace to launch all the unit tests
  • cargo doc --open to compile and open the local documentation

Some command lines

  • cargo doc --open compile and open the documentation
  • cargo install --path codegenr installs codegenr command line from sources
  • cargo install --git https://github.com/eventuallyconsultant/codegenr --branch dev installs codegenr command line from the latest github dev branch

Legacy

This tool is based on the design of a precedent one written in C# : CodegenUP.

Roadmap :

  • Load a yaml or json to serde::json

  • Resolve $ref tags

  • Pass all the resulting document to an handlebar template

  • Implement some default helper (and make some doc tests about them)

  • A plugin system

  • Migrate C# custom helpers to this new plugin system

  • A this point, we could use codegenr in place of CodegenUP, just by calling some commands

  • Rename codegenr-cli to codegenr & codegenr to codegenr-lib

  • Publish on crates.io

  • Be able to have a codegenr.toml on a workspace root to describe all the templates to execute around the workspace

  • Better Errors (typed ones)

  • Resolved Json Cache optimisation

  • all tests passing on windows too

  • Verbose/Tracing? mode

  • Better examples

  • Smol strings optimisation ?

  • Watch mode for the file changes

  • Make a VSCode extension about all of this to make it live / super user friendly for everyone

  • Allow multiple swagger2 documents merging

  • Allow multiple swagger3 documents merging

  • Transform the json to an OpenApi Generator model, and be able to use all the OpenApi Generator templates ?

Dependencies

~13–26MB
~421K SLoC