forked from loafle/openapi-generator-original
Update template modification docs (#291)
Updates some confusing wording, specifies naming conventions, and links to external `new.sh` for contributed templates (rather than modified templates).
This commit is contained in:
parent
2ff81caef6
commit
55f9e31f81
@ -2,52 +2,55 @@
|
|||||||
|
|
||||||
### Modifying a template
|
### Modifying a template
|
||||||
|
|
||||||
Clone OpenAPI Generator and take a look at the following directory: `modules/openapi-generator/src/main/resources/${template}`. In here you'll see all of the generators available, for most programming languages, web application frameworks and web servers. For example, if you are looking for the C# template, it's named `csharp`.
|
Clone OpenAPI Generator and navigate to `modules/openapi-generator/src/main/resources/${template}`, where `${template}` is the name of the generator you wish to modify. For example, if you are looking for the C# template, it's named `csharp`. This directory contains all the templates used to generate your target client/server/doc output.
|
||||||
|
|
||||||
Templates consist of multiple mustache files. [Mustache](https://mustache.github.io/) is used as the templating language for these templates, and the specific engine used is [jmustache](https://github.com/samskivert/jmustache).
|
Templates consist of multiple mustache files. [Mustache](https://mustache.github.io/) is used as the templating language for these templates, and the specific engine used is [jmustache](https://github.com/samskivert/jmustache).
|
||||||
|
|
||||||
If you wish to modify one of these templates, copy and paste the template you're interested in to a templates directory you control. To let OpenAPI Generator know where this templates directory is, use the `-t` option (e.g: `-t ./templates/`).
|
If you wish to modify one of these templates, copy and paste the template you're interested in to a templates directory you control. To let OpenAPI Generator know where this templates directory is, use the `-t` option (e.g: `-t ./templates/`).
|
||||||
|
|
||||||
To tie that all together:
|
To tie that all together (example for modifying ruby templates):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
mkdir templates
|
mkdir templates
|
||||||
cp -r modules/openapi-generator/src/main/resources/${template} templates/
|
export template=ruby
|
||||||
|
cp -r modules/openapi-generator/src/main/resources/${template} templates/${template}
|
||||||
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate \
|
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate \
|
||||||
-t ./templates/ -g ruby -i ./foo.yml -o ./out/ruby
|
-t ./templates/${template} -g ruby -i ./foo.yml -o ./out/ruby
|
||||||
```
|
```
|
||||||
|
|
||||||
_**Note:** You cannot use this approach to create new templates, only override existing ones._
|
_**Note:** You cannot use this approach to create new templates, only override existing ones. If you'd like to create a new generator within the project, see `new.sh` in the repository root._
|
||||||
|
|
||||||
### Creating a new template
|
### Creating a new template
|
||||||
|
|
||||||
If none of the templates suit your needs at all, you can create a brand new template. OpenAPI Generator can help with this, using the `meta` command:
|
If none of the templates suit your needs, you can create a brand new template. OpenAPI Generator can help with this, using the `meta` command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar meta \
|
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar meta \
|
||||||
-o out/codegens/customCodegen -n myCodegen -p com.my.company.codegen
|
-o out/generators/my-codegen -n my-codegen -p com.my.company.codegen
|
||||||
```
|
```
|
||||||
|
|
||||||
This will create a new directory `out/codegens/customCodegen`, with all the files you need to get started - including a `README.md`. Once modified and compiled, you can use your new codegen just like any other, with your own custom-rolled logic.
|
This will create a new directory `out/generators/my-codegen`, with all the files you need to get started - including a `README.md`. Once modified and compiled, you can use your new codegen just like any other, with your own custom-rolled logic.
|
||||||
|
|
||||||
These names can be anything you like. If you are building a client for the whitespace language, maybe you'd use the options `-o out/codegens/whitespace -n whitespace`. They can be the same, or different, it doesn't matter. The `-n` value will be become the template name.
|
These names can be anything you like. If you are building a client for the whitespace language, maybe you'd use the options `-o out/generators/whitespace -n whitespace`. They can be the same, or different, it doesn't matter. The `-n` value will be become the template name.
|
||||||
|
|
||||||
To compile your library, enter the `out/codegens/customCodegen` directory, run `mvn package` and execute the generator:
|
**NOTE** Convention is to use kebab casing for names passed to `-n`. Example, `scala-finatra` would become `ScalaFinatraGenerator`.
|
||||||
|
|
||||||
|
To compile your library, enter the `out/generators/my-codegen` directory, run `mvn package` and execute the generator:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
java -cp out/codegens/customCodegen/target/myCodegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar org.openapitools.codegen.OpenAPIGenerator
|
java -cp out/generators/my-codegen/target/my-codegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar org.openapitools.codegen.OpenAPIGenerator
|
||||||
```
|
```
|
||||||
|
|
||||||
For Windows users, you will need to use `;` instead of `:` in the classpath, e.g.
|
For Windows users, you will need to use `;` instead of `:` in the classpath, e.g.
|
||||||
```
|
```
|
||||||
java -cp out/codegens/customCodegen/target/myCodegen-openapi-generator-1.0.0.jar;modules/openapi-generator-cli/target/openapi-generator-cli.jar org.openapitools.codegen.OpenAPIGenerator
|
java -cp out/generators/my-codegen/target/my-codegen-openapi-generator-1.0.0.jar;modules/openapi-generator-cli/target/openapi-generator-cli.jar org.openapitools.codegen.OpenAPIGenerator
|
||||||
```
|
```
|
||||||
|
|
||||||
Note the `myCodegen` is an option for `-g` now, and you can use the usual arguments for generating your code:
|
Note the `my-codegen` is an option for `-g` now, and you can use the usual arguments for generating your code:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
java -cp out/codegens/customCodegen/target/myCodegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar \
|
java -cp out/codegens/customCodegen/target/my-codegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar \
|
||||||
io.openapitools.codegen.OpenAPIGenerator generate -g myCodegen \
|
io.openapitools.codegen.OpenAPIGenerator generate -g my-codegen \
|
||||||
-i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml \
|
-i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml \
|
||||||
-o ./out/myClient
|
-o ./out/myClient
|
||||||
```
|
```
|
||||||
@ -112,6 +115,7 @@ The ignore file allows for better control over overwriting existing files than t
|
|||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
# OpenAPI Generator Ignore
|
||||||
# Lines beginning with a # are comments
|
# Lines beginning with a # are comments
|
||||||
|
|
||||||
# This should match build.sh located anywhere.
|
# This should match build.sh located anywhere.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user