mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-12-11 04:42:47 +00:00
[CLI] Improvements for meta and list command (#799)
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
package org.openapitools.codegen.cmd;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
import io.airlift.airline.Command;
|
||||
import io.airlift.airline.Option;
|
||||
|
||||
import org.openapitools.codegen.CodegenConfig;
|
||||
import org.openapitools.codegen.CodegenConfigLoader;
|
||||
import org.openapitools.codegen.CodegenType;
|
||||
@@ -10,6 +13,7 @@ import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
// NOTE: List can later have subcommands such as list languages, list types, list frameworks, etc.
|
||||
@Command(name = "list", description = "Lists the available generators")
|
||||
@@ -41,19 +45,29 @@ public class ListGenerators implements Runnable {
|
||||
sb.append(System.lineSeparator());
|
||||
|
||||
for (CodegenType type : types) {
|
||||
sb.append(type.name()).append(" generators:");
|
||||
sb.append(System.lineSeparator());
|
||||
|
||||
generators.stream()
|
||||
.filter(g -> g.getTag().equals(type))
|
||||
.sorted(Comparator.comparing(CodegenConfig::getName))
|
||||
.forEach(generator -> sb.append(" - ").append(generator.getName()).append(System.lineSeparator()));
|
||||
|
||||
sb.append(System.lineSeparator());
|
||||
sb.append(System.lineSeparator());
|
||||
appendForType(sb, type, type.name(), generators);
|
||||
}
|
||||
appendForType(sb, null, "UNSPECIFIED", generators);
|
||||
}
|
||||
|
||||
System.out.printf(Locale.ROOT,"%s%n", sb.toString());
|
||||
System.out.printf(Locale.ROOT, "%s%n", sb.toString());
|
||||
}
|
||||
|
||||
private void appendForType(StringBuilder sb, CodegenType type, String typeName, List<CodegenConfig> generators) {
|
||||
List<CodegenConfig> list = generators.stream()
|
||||
.filter(g -> Objects.equal(type, g.getTag()))
|
||||
.sorted(Comparator.comparing(CodegenConfig::getName))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if(list.size() > 0) {
|
||||
sb.append(typeName).append(" generators:");
|
||||
sb.append(System.lineSeparator());
|
||||
|
||||
list.stream()
|
||||
.forEach(generator -> sb.append(" - ").append(generator.getName()).append(System.lineSeparator()));
|
||||
|
||||
sb.append(System.lineSeparator());
|
||||
sb.append(System.lineSeparator());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,6 +67,11 @@ public class Meta implements Runnable {
|
||||
description = "the package to put the main class into (defaults to org.openapitools.codegen)")
|
||||
private String targetPackage = "org.openapitools.codegen";
|
||||
|
||||
@Option(name = {"-t", "--type"}, title = "type",
|
||||
description = "the type of generator that is created",
|
||||
allowedValues = {"CLIENT", "SERVER", "DOCUMENTATION", "CONFIG", "OTHER"})
|
||||
private String type = "OTHER";
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
final File targetDir = new File(outputFolder);
|
||||
@@ -87,8 +92,11 @@ public class Meta implements Runnable {
|
||||
String currentVersion = Version.readVersionFromResources();
|
||||
|
||||
Map<String, Object> data =
|
||||
new ImmutableMap.Builder<String, Object>().put("generatorPackage", targetPackage)
|
||||
.put("generatorClass", mainClass).put("name", name)
|
||||
new ImmutableMap.Builder<String, Object>()
|
||||
.put("generatorPackage", targetPackage)
|
||||
.put("generatorClass", mainClass)
|
||||
.put("name", name)
|
||||
.put("generatorType", type)
|
||||
.put("fullyQualifiedGeneratorClass", targetPackage + "." + mainClass)
|
||||
.put("openapiGeneratorVersion", currentVersion).build();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user