[CLI] Improvements for meta and list command (#799)

This commit is contained in:
Jérémie Bresson
2018-08-29 06:56:37 +02:00
committed by GitHub
parent 09a62d7fef
commit 8e1e05e86c
12 changed files with 99 additions and 48 deletions

View File

@@ -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());
}
}
}

View File

@@ -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();