mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-07-04 06:30:52 +00:00
Enable CLI options for Ruby generator
This commit is contained in:
parent
1644956a9c
commit
d2a82d56aa
@ -1,5 +1,6 @@
|
|||||||
package io.swagger.codegen.languages;
|
package io.swagger.codegen.languages;
|
||||||
|
|
||||||
|
import io.swagger.codegen.CliOption;
|
||||||
import io.swagger.codegen.CodegenConfig;
|
import io.swagger.codegen.CodegenConfig;
|
||||||
import io.swagger.codegen.CodegenType;
|
import io.swagger.codegen.CodegenType;
|
||||||
import io.swagger.codegen.DefaultCodegen;
|
import io.swagger.codegen.DefaultCodegen;
|
||||||
@ -13,16 +14,16 @@ import java.util.Arrays;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
protected String gemName = "swagger_client";
|
protected String gemName = null;
|
||||||
protected String moduleName = null;
|
protected String moduleName = null;
|
||||||
|
protected String gemVersion = "1.0.0";
|
||||||
protected String libFolder = "lib";
|
protected String libFolder = "lib";
|
||||||
|
|
||||||
public RubyClientCodegen() {
|
public RubyClientCodegen() {
|
||||||
super();
|
super();
|
||||||
moduleName = generateModuleName();
|
modelPackage = "models";
|
||||||
modelPackage = gemName + "/models";
|
apiPackage = "api";
|
||||||
apiPackage = gemName + "/api";
|
outputFolder = "generated-code" + File.separator + "ruby";
|
||||||
outputFolder = "generated-code" + File.separatorChar + "ruby";
|
|
||||||
modelTemplateFiles.put("model.mustache", ".rb");
|
modelTemplateFiles.put("model.mustache", ".rb");
|
||||||
apiTemplateFiles.put("api.mustache", ".rb");
|
apiTemplateFiles.put("api.mustache", ".rb");
|
||||||
templateDir = "ruby";
|
templateDir = "ruby";
|
||||||
@ -39,9 +40,6 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
"if", "not", "return", "undef", "yield")
|
"if", "not", "return", "undef", "yield")
|
||||||
);
|
);
|
||||||
|
|
||||||
additionalProperties.put("gemName", gemName);
|
|
||||||
additionalProperties.put("moduleName", moduleName);
|
|
||||||
|
|
||||||
languageSpecificPrimitives.add("int");
|
languageSpecificPrimitives.add("int");
|
||||||
languageSpecificPrimitives.add("array");
|
languageSpecificPrimitives.add("array");
|
||||||
languageSpecificPrimitives.add("map");
|
languageSpecificPrimitives.add("map");
|
||||||
@ -55,17 +53,57 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
typeMapping.put("List", "array");
|
typeMapping.put("List", "array");
|
||||||
typeMapping.put("map", "map");
|
typeMapping.put("map", "map");
|
||||||
|
|
||||||
String baseFolder = "lib" + File.separatorChar + gemName;
|
// remove modelPackage and apiPackage added by default
|
||||||
String swaggerFolder = baseFolder + File.separatorChar + "swagger";
|
cliOptions.clear();
|
||||||
String modelFolder = baseFolder + File.separatorChar + "models";
|
cliOptions.add(new CliOption("gemName", "gem name, default: swagger_client"));
|
||||||
|
cliOptions.add(new CliOption("moduleName", "top module name, usually corresponding to gem name, default: SwaggerClient"));
|
||||||
|
cliOptions.add(new CliOption("gemVersion", "gem version, default: 1.0.0"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processOpts() {
|
||||||
|
super.processOpts();
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey("gemName")) {
|
||||||
|
setGemName((String) additionalProperties.get("gemName"));
|
||||||
|
}
|
||||||
|
if (additionalProperties.containsKey("moduleName")) {
|
||||||
|
setModuleName((String) additionalProperties.get("moduleName"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gemName == null && moduleName == null) {
|
||||||
|
setGemName("swagger_client");
|
||||||
|
setModuleName(generateModuleName(gemName));
|
||||||
|
} else if (gemName == null) {
|
||||||
|
setGemName(generateGemName(moduleName));
|
||||||
|
} else if (moduleName == null) {
|
||||||
|
setModuleName(generateModuleName(gemName));
|
||||||
|
}
|
||||||
|
|
||||||
|
additionalProperties.put("gemName", gemName);
|
||||||
|
additionalProperties.put("moduleName", moduleName);
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey("gemVersion")) {
|
||||||
|
setGemVersion((String) additionalProperties.get("gemVersion"));
|
||||||
|
} else {
|
||||||
|
// not set, pass the default value to template
|
||||||
|
additionalProperties.put("gemVersion", gemVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
// use constant model/api package (folder path)
|
||||||
|
setModelPackage("models");
|
||||||
|
setApiPackage("api");
|
||||||
supportingFiles.add(new SupportingFile("swagger_client.gemspec.mustache", "", gemName + ".gemspec"));
|
supportingFiles.add(new SupportingFile("swagger_client.gemspec.mustache", "", gemName + ".gemspec"));
|
||||||
supportingFiles.add(new SupportingFile("swagger_client.mustache", "lib", gemName + ".rb"));
|
supportingFiles.add(new SupportingFile("swagger_client.mustache", libFolder, gemName + ".rb"));
|
||||||
|
String baseFolder = libFolder + File.separator + gemName;
|
||||||
supportingFiles.add(new SupportingFile("monkey.mustache", baseFolder, "monkey.rb"));
|
supportingFiles.add(new SupportingFile("monkey.mustache", baseFolder, "monkey.rb"));
|
||||||
supportingFiles.add(new SupportingFile("swagger.mustache", baseFolder, "swagger.rb"));
|
supportingFiles.add(new SupportingFile("swagger.mustache", baseFolder, "swagger.rb"));
|
||||||
supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "request.mustache", swaggerFolder, "request.rb"));
|
String swaggerFolder = baseFolder + File.separator + "swagger";
|
||||||
supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "response.mustache", swaggerFolder, "response.rb"));
|
supportingFiles.add(new SupportingFile("swagger" + File.separator + "request.mustache", swaggerFolder, "request.rb"));
|
||||||
supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "version.mustache", swaggerFolder, "version.rb"));
|
supportingFiles.add(new SupportingFile("swagger" + File.separator + "response.mustache", swaggerFolder, "response.rb"));
|
||||||
supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "configuration.mustache", swaggerFolder, "configuration.rb"));
|
supportingFiles.add(new SupportingFile("swagger" + File.separator + "version.mustache", swaggerFolder, "version.rb"));
|
||||||
|
supportingFiles.add(new SupportingFile("swagger" + File.separator + "configuration.mustache", swaggerFolder, "configuration.rb"));
|
||||||
|
String modelFolder = baseFolder + File.separator + modelPackage.replace("/", File.separator);
|
||||||
supportingFiles.add(new SupportingFile("base_object.mustache", modelFolder, "base_object.rb"));
|
supportingFiles.add(new SupportingFile("base_object.mustache", modelFolder, "base_object.rb"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,10 +122,17 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
/**
|
/**
|
||||||
* Generate Ruby module name from the gem name, e.g. use "SwaggerClient" for "swagger_client".
|
* Generate Ruby module name from the gem name, e.g. use "SwaggerClient" for "swagger_client".
|
||||||
*/
|
*/
|
||||||
public String generateModuleName() {
|
public String generateModuleName(String gemName) {
|
||||||
return camelize(gemName.replaceAll("[^\\w]+", "_"));
|
return camelize(gemName.replaceAll("[^\\w]+", "_"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate Ruby gem name from the module name, e.g. use "swagger_client" for "SwaggerClient".
|
||||||
|
*/
|
||||||
|
public String generateGemName(String moduleName) {
|
||||||
|
return underscore(moduleName.replaceAll("[^\\w]+", ""));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String escapeReservedWord(String name) {
|
public String escapeReservedWord(String name) {
|
||||||
return "_" + name;
|
return "_" + name;
|
||||||
@ -95,11 +140,11 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String apiFileFolder() {
|
public String apiFileFolder() {
|
||||||
return outputFolder + File.separatorChar + "lib" + File.separatorChar + gemName + File.separatorChar + "api";
|
return outputFolder + File.separator + libFolder + File.separator + gemName + File.separator + apiPackage.replace("/", File.separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String modelFileFolder() {
|
public String modelFileFolder() {
|
||||||
return outputFolder + File.separatorChar + "lib" + File.separatorChar + gemName + File.separatorChar + "models";
|
return outputFolder + File.separator + libFolder + File.separator + gemName + File.separator + modelPackage.replace("/", File.separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -220,12 +265,23 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toModelImport(String name) {
|
public String toModelImport(String name) {
|
||||||
return modelPackage() + "/" + toModelFilename(name);
|
return gemName + "/" + modelPackage() + "/" + toModelFilename(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toApiImport(String name) {
|
public String toApiImport(String name) {
|
||||||
return apiPackage() + "/" + toApiFilename(name);
|
return gemName + "/" + apiPackage() + "/" + toApiFilename(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setGemName(String gemName) {
|
||||||
|
this.gemName = gemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModuleName(String moduleName) {
|
||||||
|
this.moduleName = moduleName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGemVersion(String gemVersion) {
|
||||||
|
this.gemVersion = gemVersion;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
module {{moduleName}}
|
module {{moduleName}}
|
||||||
module Swagger
|
module Swagger
|
||||||
VERSION = "{{appVersion}}"
|
VERSION = "{{gemVersion}}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -7,7 +7,7 @@ require '{{gemName}}/swagger/response'
|
|||||||
require '{{gemName}}/swagger/version'
|
require '{{gemName}}/swagger/version'
|
||||||
|
|
||||||
# Models
|
# Models
|
||||||
require '{{modelPackage}}/base_object'
|
require '{{gemName}}/{{modelPackage}}/base_object'
|
||||||
{{#models}}
|
{{#models}}
|
||||||
require '{{importPath}}'
|
require '{{importPath}}'
|
||||||
{{/models}}
|
{{/models}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user