diff --git a/bin/utils/ensure-up-to-date b/bin/utils/ensure-up-to-date index 799e7dc2005..9ed02e3dd23 100755 --- a/bin/utils/ensure-up-to-date +++ b/bin/utils/ensure-up-to-date @@ -61,7 +61,6 @@ declare -a scripts=( "./bin/meta-codegen.sh" # OTHERS "./bin/utils/export_docs_generators.sh" -"./bin/utils/export_generators_docusaurus_index.sh" "./bin/utils/copy-to-website.sh" "./bin/utils/export_generators_readme.sh") diff --git a/bin/utils/export_docs_generators.sh b/bin/utils/export_docs_generators.sh index 0e1b50998c4..4f211dfa4a8 100755 --- a/bin/utils/export_docs_generators.sh +++ b/bin/utils/export_docs_generators.sh @@ -5,7 +5,7 @@ echo "# START SCRIPT: ${SCRIPT}" executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" -for GENERATOR in $(java -jar ${executable} list --short | sed -e 's/,/\'$'\n''/g') +for GENERATOR in $(java -jar ${executable} list --short --include all | sed -e 's/,/\'$'\n''/g') do ./bin/utils/export_generator.sh ${GENERATOR} done diff --git a/bin/utils/export_generators_docusaurus_index.sh b/bin/utils/export_generators_docusaurus_index.sh deleted file mode 100755 index 769e0a98db5..00000000000 --- a/bin/utils/export_generators_docusaurus_index.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -SCRIPT="$0" -echo "# START SCRIPT: $SCRIPT" - -executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" - -\rm -rf docs/generators.md - -cat > docs/generators.md << EOF ---- -id: generators -title: Generators List ---- - -EOF - -java -jar $executable list --docsite >> docs/generators.md - -echo "Wrote $(pwd)/docs/generators.md" diff --git a/bin/utils/export_generators_readme.sh b/bin/utils/export_generators_readme.sh index ba1d043432b..524b62f3d21 100755 --- a/bin/utils/export_generators_readme.sh +++ b/bin/utils/export_generators_readme.sh @@ -15,6 +15,6 @@ title: Generators List EOF -java -jar $executable list | sed -e 's/\([A-Z]*\) generators:/* \1 generators:/g' -e 's/- \([a-z0-9\-]*\)/- [\1]\(generators\/\1.md\)/g' >> docs/generators.md +java -jar $executable list --docsite --include all >> docs/generators.md echo "Wrote $(pwd)/docs/generators.md" diff --git a/docs/generators.md b/docs/generators.md index 77f0a887afb..ede28ac0d6a 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -5,132 +5,132 @@ title: Generators List The following generators are available: -* CLIENT generators: - - [ada](generators/ada.md) - - [android](generators/android.md) - - [apex](generators/apex.md) - - [bash](generators/bash.md) - - [c](generators/c.md) - - [clojure](generators/clojure.md) - - [cpp-qt5-client](generators/cpp-qt5-client.md) - - [cpp-restsdk](generators/cpp-restsdk.md) - - [cpp-tizen](generators/cpp-tizen.md) - - [csharp](generators/csharp.md) - - [csharp-dotnet2](generators/csharp-dotnet2.md) (deprecated) - - [csharp-netcore](generators/csharp-netcore.md) - - [dart](generators/dart.md) - - [dart-jaguar](generators/dart-jaguar.md) - - [eiffel](generators/eiffel.md) - - [elixir](generators/elixir.md) - - [elm](generators/elm.md) - - [erlang-client](generators/erlang-client.md) - - [erlang-proper](generators/erlang-proper.md) - - [flash](generators/flash.md) - - [go](generators/go.md) - - [go-experimental](generators/go-experimental.md) - - [groovy](generators/groovy.md) - - [haskell-http-client](generators/haskell-http-client.md) - - [java](generators/java.md) - - [javascript](generators/javascript.md) - - [javascript-closure-angular](generators/javascript-closure-angular.md) - - [javascript-flowtyped](generators/javascript-flowtyped.md) - - [jaxrs-cxf-client](generators/jaxrs-cxf-client.md) - - [jmeter](generators/jmeter.md) - - [kotlin](generators/kotlin.md) - - [lua](generators/lua.md) - - [objc](generators/objc.md) - - [ocaml](generators/ocaml.md) - - [perl](generators/perl.md) - - [php](generators/php.md) - - [powershell](generators/powershell.md) - - [python](generators/python.md) - - [python-experimental](generators/python-experimental.md) - - [r](generators/r.md) - - [ruby](generators/ruby.md) - - [rust](generators/rust.md) - - [scala-akka](generators/scala-akka.md) - - [scala-gatling](generators/scala-gatling.md) - - [scala-httpclient-deprecated](generators/scala-httpclient-deprecated.md) (deprecated) - - [scalaz](generators/scalaz.md) - - [swift2-deprecated](generators/swift2-deprecated.md) (deprecated) - - [swift3-deprecated](generators/swift3-deprecated.md) (deprecated) - - [swift4](generators/swift4.md) - - [typescript-angular](generators/typescript-angular.md) - - [typescript-angularjs](generators/typescript-angularjs.md) - - [typescript-aurelia](generators/typescript-aurelia.md) - - [typescript-axios](generators/typescript-axios.md) - - [typescript-fetch](generators/typescript-fetch.md) - - [typescript-inversify](generators/typescript-inversify.md) - - [typescript-jquery](generators/typescript-jquery.md) - - [typescript-node](generators/typescript-node.md) - - [typescript-rxjs](generators/typescript-rxjs.md) +## CLIENT generators +* [ada](generators/ada) +* [android](generators/android) +* [apex](generators/apex) +* [bash](generators/bash) +* [c](generators/c) +* [clojure](generators/clojure) +* [cpp-qt5-client](generators/cpp-qt5-client) +* [cpp-restsdk](generators/cpp-restsdk) +* [cpp-tizen](generators/cpp-tizen) +* [csharp](generators/csharp) +* [csharp-dotnet2 (deprecated)](generators/csharp-dotnet2) +* [csharp-netcore](generators/csharp-netcore) +* [dart](generators/dart) +* [dart-jaguar](generators/dart-jaguar) +* [eiffel](generators/eiffel) +* [elixir](generators/elixir) +* [elm](generators/elm) +* [erlang-client](generators/erlang-client) +* [erlang-proper](generators/erlang-proper) +* [flash](generators/flash) +* [go](generators/go) +* [go-experimental (experimental)](generators/go-experimental) +* [groovy](generators/groovy) +* [haskell-http-client](generators/haskell-http-client) +* [java](generators/java) +* [javascript](generators/javascript) +* [javascript-closure-angular](generators/javascript-closure-angular) +* [javascript-flowtyped](generators/javascript-flowtyped) +* [jaxrs-cxf-client](generators/jaxrs-cxf-client) +* [jmeter](generators/jmeter) +* [kotlin](generators/kotlin) +* [lua](generators/lua) +* [objc](generators/objc) +* [ocaml](generators/ocaml) +* [perl](generators/perl) +* [php](generators/php) +* [powershell](generators/powershell) +* [python](generators/python) +* [python-experimental (experimental)](generators/python-experimental) +* [r](generators/r) +* [ruby](generators/ruby) +* [rust](generators/rust) +* [scala-akka](generators/scala-akka) +* [scala-gatling](generators/scala-gatling) +* [scala-httpclient-deprecated (deprecated)](generators/scala-httpclient-deprecated) +* [scalaz](generators/scalaz) +* [swift2-deprecated (deprecated)](generators/swift2-deprecated) +* [swift3-deprecated (deprecated)](generators/swift3-deprecated) +* [swift4](generators/swift4) +* [typescript-angular](generators/typescript-angular) +* [typescript-angularjs](generators/typescript-angularjs) +* [typescript-aurelia](generators/typescript-aurelia) +* [typescript-axios](generators/typescript-axios) +* [typescript-fetch](generators/typescript-fetch) +* [typescript-inversify](generators/typescript-inversify) +* [typescript-jquery](generators/typescript-jquery) +* [typescript-node](generators/typescript-node) +* [typescript-rxjs](generators/typescript-rxjs) -* SERVER generators: - - [ada-server](generators/ada-server.md) - - [aspnetcore](generators/aspnetcore.md) - - [cpp-pistache-server](generators/cpp-pistache-server.md) - - [cpp-qt5-qhttpengine-server](generators/cpp-qt5-qhttpengine-server.md) - - [cpp-restbed-server](generators/cpp-restbed-server.md) - - [csharp-nancyfx](generators/csharp-nancyfx.md) - - [erlang-server](generators/erlang-server.md) - - [fsharp-giraffe-server](generators/fsharp-giraffe-server.md) - - [go-gin-server](generators/go-gin-server.md) - - [go-server](generators/go-server.md) - - [graphql-nodejs-express-server](generators/graphql-nodejs-express-server.md) - - [haskell](generators/haskell.md) - - [java-inflector](generators/java-inflector.md) - - [java-msf4j](generators/java-msf4j.md) - - [java-pkmst](generators/java-pkmst.md) - - [java-play-framework](generators/java-play-framework.md) - - [java-undertow-server](generators/java-undertow-server.md) - - [java-vertx](generators/java-vertx.md) - - [jaxrs-cxf](generators/jaxrs-cxf.md) - - [jaxrs-cxf-cdi](generators/jaxrs-cxf-cdi.md) - - [jaxrs-cxf-extended](generators/jaxrs-cxf-extended.md) - - [jaxrs-jersey](generators/jaxrs-jersey.md) - - [jaxrs-resteasy](generators/jaxrs-resteasy.md) - - [jaxrs-resteasy-eap](generators/jaxrs-resteasy-eap.md) - - [jaxrs-spec](generators/jaxrs-spec.md) - - [kotlin-server](generators/kotlin-server.md) - - [kotlin-spring](generators/kotlin-spring.md) - - [nodejs-express-server](generators/nodejs-express-server.md) (beta) - - [nodejs-server-deprecated](generators/nodejs-server-deprecated.md) (deprecated) - - [php-laravel](generators/php-laravel.md) - - [php-lumen](generators/php-lumen.md) - - [php-silex](generators/php-silex.md) - - [php-slim](generators/php-slim.md) - - [php-symfony](generators/php-symfony.md) - - [php-ze-ph](generators/php-ze-ph.md) - - [python-aiohttp](generators/python-aiohttp.md) - - [python-blueplanet](generators/python-blueplanet.md) - - [python-flask](generators/python-flask.md) - - [ruby-on-rails](generators/ruby-on-rails.md) - - [ruby-sinatra](generators/ruby-sinatra.md) - - [rust-server](generators/rust-server.md) - - [scala-finch](generators/scala-finch.md) - - [scala-lagom-server](generators/scala-lagom-server.md) - - [scala-play-server](generators/scala-play-server.md) - - [scalatra](generators/scalatra.md) - - [spring](generators/spring.md) +## SERVER generators +* [ada-server](generators/ada-server) +* [aspnetcore](generators/aspnetcore) +* [cpp-pistache-server](generators/cpp-pistache-server) +* [cpp-qt5-qhttpengine-server](generators/cpp-qt5-qhttpengine-server) +* [cpp-restbed-server](generators/cpp-restbed-server) +* [csharp-nancyfx](generators/csharp-nancyfx) +* [erlang-server](generators/erlang-server) +* [fsharp-giraffe-server](generators/fsharp-giraffe-server) +* [go-gin-server](generators/go-gin-server) +* [go-server](generators/go-server) +* [graphql-nodejs-express-server](generators/graphql-nodejs-express-server) +* [haskell](generators/haskell) +* [java-inflector](generators/java-inflector) +* [java-msf4j](generators/java-msf4j) +* [java-pkmst](generators/java-pkmst) +* [java-play-framework](generators/java-play-framework) +* [java-undertow-server](generators/java-undertow-server) +* [java-vertx](generators/java-vertx) +* [jaxrs-cxf](generators/jaxrs-cxf) +* [jaxrs-cxf-cdi](generators/jaxrs-cxf-cdi) +* [jaxrs-cxf-extended](generators/jaxrs-cxf-extended) +* [jaxrs-jersey](generators/jaxrs-jersey) +* [jaxrs-resteasy](generators/jaxrs-resteasy) +* [jaxrs-resteasy-eap](generators/jaxrs-resteasy-eap) +* [jaxrs-spec](generators/jaxrs-spec) +* [kotlin-server](generators/kotlin-server) +* [kotlin-spring](generators/kotlin-spring) +* [nodejs-express-server (beta)](generators/nodejs-express-server) +* [nodejs-server-deprecated (deprecated)](generators/nodejs-server-deprecated) +* [php-laravel](generators/php-laravel) +* [php-lumen](generators/php-lumen) +* [php-silex](generators/php-silex) +* [php-slim](generators/php-slim) +* [php-symfony](generators/php-symfony) +* [php-ze-ph](generators/php-ze-ph) +* [python-aiohttp](generators/python-aiohttp) +* [python-blueplanet](generators/python-blueplanet) +* [python-flask](generators/python-flask) +* [ruby-on-rails](generators/ruby-on-rails) +* [ruby-sinatra](generators/ruby-sinatra) +* [rust-server](generators/rust-server) +* [scala-finch](generators/scala-finch) +* [scala-lagom-server](generators/scala-lagom-server) +* [scala-play-server](generators/scala-play-server) +* [scalatra](generators/scalatra) +* [spring](generators/spring) -* DOCUMENTATION generators: - - [cwiki](generators/cwiki.md) - - [dynamic-html](generators/dynamic-html.md) - - [html](generators/html.md) - - [html2](generators/html2.md) - - [openapi](generators/openapi.md) - - [openapi-yaml](generators/openapi-yaml.md) +## DOCUMENTATION generators +* [cwiki](generators/cwiki) +* [dynamic-html](generators/dynamic-html) +* [html](generators/html) +* [html2](generators/html2) +* [openapi](generators/openapi) +* [openapi-yaml](generators/openapi-yaml) -* SCHEMA generators: - - [mysql-schema](generators/mysql-schema.md) +## SCHEMA generators +* [mysql-schema](generators/mysql-schema) -* CONFIG generators: - - [apache2](generators/apache2.md) - - [graphql-schema](generators/graphql-schema.md) +## CONFIG generators +* [apache2](generators/apache2) +* [graphql-schema](generators/graphql-schema) diff --git a/docs/usage.md b/docs/usage.md index 3881595d462..3ee12db6824 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -38,9 +38,15 @@ NAME openapi-generator-cli list - Lists the available generators SYNOPSIS - openapi-generator-cli list [(-s | --short)] + openapi-generator-cli list [(-i | --include )] + [(-s | --short)] OPTIONS + -i , --include + comma-separated list of stability indexes to include (value: + all,beta,stable,experimental,deprecated). Excludes deprecated by + default. + -s, --short shortened output (suitable for scripting) @@ -210,13 +216,14 @@ This command takes one or more parameters representing the args list you would o ```bash openapi-generator completion config-help ---named-header -o --output +--named-header -g --generator-name --l ---lang +-f +--format +--markdown-header ``` An example bash completion script can be found in the repo at [scripts/openapi-generator-cli-completion.bash](https://github.com/OpenAPITools/openapi-generator/blob/master/scripts/openapi-generator-cli-completion.bash). diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ListGenerators.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ListGenerators.java index afffaae90f5..340afe93395 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ListGenerators.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ListGenerators.java @@ -5,15 +5,14 @@ import com.google.common.base.Objects; import io.airlift.airline.Command; import io.airlift.airline.Option; +import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CodegenConfig; import org.openapitools.codegen.CodegenConfigLoader; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.meta.GeneratorMetadata; import org.openapitools.codegen.meta.Stability; -import java.util.Comparator; -import java.util.List; -import java.util.Locale; +import java.util.*; import java.util.stream.Collectors; // NOTE: List can later have subcommands such as list languages, list types, list frameworks, etc. @@ -26,9 +25,31 @@ public class ListGenerators implements Runnable { @Option(name = {"-d", "--docsite" }, description = "format for docusaurus site output", hidden = true) private Boolean docusaurus = false; + @Option(name = {"-i", "--include" }, + description = "comma-separated list of stability indexes to include (value: all,beta,stable,experimental,deprecated). Excludes deprecated by default.", + allowedValues = { "all", "beta", "stable", "experimental", "deprecated" }) + private String include = "stable,beta,experimental"; + @Override public void run() { - List generators = CodegenConfigLoader.getAll(); + List generators = new ArrayList<>(); + List stabilities = Arrays.asList(Stability.values()); + + if (!StringUtils.isEmpty(include)) { + List includes = Arrays.asList(include.split(",")); + if (includes.size() != 0 && !includes.contains("all")) { + stabilities = includes.stream() + .map(Stability::forDescription) + .collect(Collectors.toList()); + } + } + + for (CodegenConfig codegenConfig : CodegenConfigLoader.getAll()) { + GeneratorMetadata meta = codegenConfig.getGeneratorMetadata(); + if (meta != null && stabilities.contains(meta.getStability())) { + generators.add(codegenConfig); + } + } StringBuilder sb = new StringBuilder(); diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/meta/Stability.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/meta/Stability.java index 8547ea9b10d..00c672284e2 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/meta/Stability.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/meta/Stability.java @@ -50,4 +50,14 @@ public enum Stability { * @return The descriptive value of this enum. */ public String value() { return description; } + + public static Stability forDescription(String description) { + for (Stability value: values()) { + if (value.description.equals(description)) { + return value; + } + } + + throw new IllegalArgumentException("description not found in the available values."); + } } diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index d35c7240ed8..7760608cf8b 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -374,6 +374,18 @@ openApiGenerate { |=== +=== openApiGenerators + +.Options +|=== +|Key |Data Type |Default |Description + +|include +|String[] +|None +|A list of stability indexes to include (values: all,beta,stable,experimental,deprecated). Excludes deprecated by default. + +|=== == Examples diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt index 21514aa2593..7a2a4ab6e4d 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt @@ -19,6 +19,7 @@ package org.openapitools.generator.gradle.plugin import org.gradle.api.Plugin import org.gradle.api.Project import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorGenerateExtension +import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorGeneratorsExtension import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorMetaExtension import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorValidateExtension import org.openapitools.generator.gradle.plugin.tasks.GenerateTask @@ -53,12 +54,20 @@ class OpenApiGeneratorPlugin : Plugin { project ) + val generators = extensions.create( + "openApiGenerators", + OpenApiGeneratorGeneratorsExtension::class.java, + project + ) + generate.outputDir.set("$buildDir/generate-resources/main") tasks.apply { create("openApiGenerators", GeneratorsTask::class.java) { group = pluginGroup description = "Lists generators available via Open API Generators." + + include.set(generators.include) } create("openApiMeta", MetaTask::class.java) { diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGeneratorsExtension.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGeneratorsExtension.kt new file mode 100644 index 00000000000..53de4c037e9 --- /dev/null +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGeneratorsExtension.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2019 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.generator.gradle.plugin.extensions + +import org.gradle.api.Project +import org.gradle.api.tasks.Internal +import org.gradle.kotlin.dsl.listProperty +import org.openapitools.codegen.meta.Stability + +/** + * Gradle project level extension object definition for the generators task + * + * @author Jim Schubert + */ +open class OpenApiGeneratorGeneratorsExtension(project: Project) { + /** + * A list of stability indexes to include (value: all,beta,stable,experimental,deprecated). Excludes deprecated by default. + */ + val include = project.objects.listProperty() + + init { + applyDefaults() + } + + @Suppress("MemberVisibilityCanBePrivate") + fun applyDefaults(){ + include.set(Stability.values().map { s -> s.value() }.filterNot { it == Stability.DEPRECATED.value() }) + } +} diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GeneratorsTask.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GeneratorsTask.kt index f0a8963059b..b32a1c1e9bc 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GeneratorsTask.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GeneratorsTask.kt @@ -17,9 +17,11 @@ package org.openapitools.generator.gradle.plugin.tasks import org.gradle.api.DefaultTask +import org.gradle.api.tasks.Internal import org.gradle.api.tasks.TaskAction import org.gradle.internal.logging.text.StyledTextOutput import org.gradle.internal.logging.text.StyledTextOutputFactory +import org.gradle.kotlin.dsl.listProperty import org.openapitools.codegen.CodegenConfigLoader import org.openapitools.codegen.CodegenType import org.openapitools.codegen.meta.GeneratorMetadata @@ -35,6 +37,12 @@ import org.openapitools.codegen.meta.Stability * @author Jim Schubert */ open class GeneratorsTask : DefaultTask() { + /** + * A list of stability indexes to include (value: all,beta,stable,experimental,deprecated). Excludes deprecated by default. + */ + @get:Internal + val include = project.objects.listProperty() + @Suppress("unused") @TaskAction fun doWork() { @@ -45,6 +53,15 @@ open class GeneratorsTask : DefaultTask() { StringBuilder().apply { val types = CodegenType.values() + val stabilities = if (include.isPresent) { + when { + include.get().contains("all") -> Stability.values().toList() + else -> include.get().map { Stability.forDescription(it) } + } + } else { + Stability.values().filterNot { it == Stability.DEPRECATED } + } + append("The following generators are available:") append(System.lineSeparator()) @@ -56,21 +73,23 @@ open class GeneratorsTask : DefaultTask() { generators.filter { it.tag == type } .sortedBy { it.name } - .forEach({ generator -> + .forEach { generator -> val meta: GeneratorMetadata? = generator.generatorMetadata + val include = stabilities.contains(meta?.stability) + if (include) { + append(" - ") + append(generator.name) - append(" - ") - append(generator.name) - - meta?.stability?.let { - if (it != Stability.STABLE) { - append(" (${it.value()})") + meta?.stability?.let { + if (it != Stability.STABLE) { + append(" (${it.value()})") + } } - } - append(System.lineSeparator()) - }) + append(System.lineSeparator()) + } + } append(System.lineSeparator()) append(System.lineSeparator()) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientExperimentalCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientExperimentalCodegen.java index ff0aafe24cb..e541998cddc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientExperimentalCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientExperimentalCodegen.java @@ -19,6 +19,8 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.SupportingFile; +import org.openapitools.codegen.meta.GeneratorMetadata; +import org.openapitools.codegen.meta.Stability; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,6 +35,10 @@ public class GoClientExperimentalCodegen extends GoClientCodegen { super(); outputFolder = "generated-code/go-experimental"; embeddedTemplateDir = templateDir = "go-experimental"; + + generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) + .stability(Stability.EXPERIMENTAL) + .build(); } /** diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java index ffbad6f5d23..4f5d3c3af59 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java @@ -18,6 +18,9 @@ package org.openapitools.codegen.languages; import java.text.DateFormat; import java.text.SimpleDateFormat; + +import org.openapitools.codegen.meta.GeneratorMetadata; +import org.openapitools.codegen.meta.Stability; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,6 +42,10 @@ public class PythonClientExperimentalCodegen extends PythonClientCodegen { apiTemplateFiles.put("python-experimental/api.mustache", ".py"); modelDocTemplateFiles.put("python-experimental/model_doc.mustache", ".md"); modelTemplateFiles.put("python-experimental/model.mustache", ".py"); + + generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) + .stability(Stability.EXPERIMENTAL) + .build(); } /**