Abstract

OpenAPI Generator のコード生成をカスタマイズする際に、mustache構文で苦戦(どんなオプションを使えるのかがわからなかった。)したので、そのときに助かった方法をメモしておきます。

Commands

mustacheで使えるオプションを表示する方法として、以下のコマンドがあります。

ご自身で使われているOpenAPI yamlからのコード生成時に --global-property debugOperations=true を付与することでオプション一覧を見ることができます。

1
2
3
4
5
$ npx @openapitools/openapi-generator-cli generate \
  -i sample.yaml \
  -g typescript-axios \
  --global-property \
  debugOperations=true

Command Result

コマンドの結果は以下のような感じで出るので、Model info の指す意味は、たとえば以下のようにかけるよってことでした。

1
2
3
4
5
{{#models}}
  {{#model}}
    nameは、{{name}} です。
  {{/model}}
{{/models}}

コマンドの結果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
############ Model info ############
[ {
  "model" : {
    "name" : "Order",
    "classname" : "Order",
    "classVarName" : "Order",
    "modelJson" : "{\n  \"type\" : \"object\",\n  \"properties\" : {\n    \"id\" : {\n      \"type\" : \"integer\",\n      \"format\" : \"int64\"\n    },\n    \"petId\" : {\n      \"type\" : \"integer\",\n      \"format\" : \"int64\"\n    },\n    \"quantity\" : {\n      \"type\" : \"integer\",\n      \"format\" : \"int32\"\n    },\n    \"shipDate\" : {\n      \"type\" : \"string\",\n      \"format\" : \"date-time\"\n    },\n    \"status\" : {\n      \"type\" : \"string\",\n      \"description\" : \"Order Status\",\n      \"enum\" : [ \"placed\", \"approved\", \"delivered\" ]\n    },\n    \"complete\" : {\n      \"type\" : \"boolean\",\n      \"default\" : false\n    }\n  },\n  \"xml\" : {\n    \"name\" : \"Order\"\n  }\n}",
    "vars" : [ {
      "baseName" : "id",
      "getter" : "getId",
      "setter" : "setId",
      "datatype" : "long?",
      "datatypeWithEnum" : "long?",
      "name" : "Id",
      "defaultValue" : "null",
      "baseType" : "long?",
      "jsonSchema" : "{\n  \"type\" : \"integer\",\n  \"format\" : \"int64\"\n}",
      "hasMore" : true,
      "isPrimitiveType" : true,
      "isNotContainer" : true,
      "isEnum" : false
    }, {

Reference