diff --git a/bin/configs/python-experimental.yaml b/bin/configs/python-experimental.yaml index 1a8ea6e002c..dd204f44938 100644 --- a/bin/configs/python-experimental.yaml +++ b/bin/configs/python-experimental.yaml @@ -2,7 +2,6 @@ generatorName: python-experimental outputDir: samples/openapi3/client/petstore/python-experimental inputSpec: modules/openapi-generator/src/test/resources/3_0/python-experimental/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml templateDir: modules/openapi-generator/src/main/resources/python-experimental -templatingEngineName: handlebars additionalProperties: packageName: petstore_api recursionLimit: "1234" diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java index e2feddb9822..64e426fa68a 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/WorkflowSettings.java @@ -46,7 +46,7 @@ public class WorkflowSettings { public static final boolean DEFAULT_ENABLE_MINIMAL_UPDATE = false; public static final boolean DEFAULT_STRICT_SPEC_BEHAVIOR = true; public static final boolean DEFAULT_GENERATE_ALIAS_AS_MODEL = false; - public static final String DEFAULT_TEMPLATING_ENGINE_NAME = "mustache"; + public static final String DEFAULT_TEMPLATING_ENGINE_NAME = null; // this is set by the generator public static final Map DEFAULT_GLOBAL_PROPERTIES = Collections.unmodifiableMap(new HashMap<>()); private String inputSpec; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java index 5dc77787e60..17b9b978259 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java @@ -304,4 +304,6 @@ public interface CodegenConfig { void setRemoveEnumValuePrefix(boolean removeEnumValuePrefix); Schema unaliasSchema(Schema schema, Map usedImportMappings); + + public String defaultTemplatingEngine(); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 1af3ddbba39..1a9d09441c0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -7356,4 +7356,9 @@ public class DefaultCodegen implements CodegenConfig { } return xOf; } + + @Override + public String defaultTemplatingEngine() { + return "mustache"; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java index b5bd0b23c33..9eb6f558ef7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java @@ -91,11 +91,18 @@ public class CodegenConfigurator { WorkflowSettings workflowSettings = settings.getWorkflowSettings(); List userDefinedTemplateSettings = settings.getFiles(); + CodegenConfig config = CodegenConfigLoader.forName(generatorSettings.getGeneratorName()); + String templatingEngineName = workflowSettings.getTemplatingEngineName(); + if (isEmpty(templatingEngineName)) { + // if templatingEngineName is empty check the config for a default + templatingEngineName = config.defaultTemplatingEngine(); + } + // We copy "cached" properties into configurator so it is appropriately configured with all settings in external files. // FIXME: target is to eventually move away from CodegenConfigurator properties except gen/workflow settings. configurator.generatorName = generatorSettings.getGeneratorName(); configurator.inputSpec = workflowSettings.getInputSpec(); - configurator.templatingEngineName = workflowSettings.getTemplatingEngineName(); + configurator.templatingEngineName = templatingEngineName; if (workflowSettings.getGlobalProperties() != null) { configurator.globalProperties.putAll(workflowSettings.getGlobalProperties()); } @@ -482,15 +489,17 @@ public class CodegenConfigurator { Validate.notEmpty(generatorName, "generator name must be specified"); Validate.notEmpty(inputSpec, "input spec must be specified"); + GeneratorSettings generatorSettings = generatorSettingsBuilder.build(); + CodegenConfig config = CodegenConfigLoader.forName(generatorSettings.getGeneratorName()); if (isEmpty(templatingEngineName)) { - // Built-in templates are mustache, but allow users to use a simplified handlebars engine for their custom templates. - workflowSettingsBuilder.withTemplatingEngineName("mustache"); + // if templatingEngineName is empty check the config for a default + String defaultTemplatingEngine = config.defaultTemplatingEngine(); + workflowSettingsBuilder.withTemplatingEngineName(defaultTemplatingEngine); } else { workflowSettingsBuilder.withTemplatingEngineName(templatingEngineName); } // at this point, all "additionalProperties" are set, and are now immutable per GeneratorSettings instance. - GeneratorSettings generatorSettings = generatorSettingsBuilder.build(); WorkflowSettings workflowSettings = workflowSettingsBuilder.build(); if (workflowSettings.isVerbose()) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java index cc985490ae9..6d1aebdac02 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonExperimentalClientCodegen.java @@ -2075,4 +2075,9 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen { } return co; } + + @Override + public String defaultTemplatingEngine() { + return "handlebars"; + } }