From 7f86eb93c0b1a2906a81762b035fd74e3b1bdd8d Mon Sep 17 00:00:00 2001 From: Matthew Haughton <3flex@users.noreply.github.com> Date: Thu, 7 Apr 2022 14:08:42 +1000 Subject: [PATCH] Display dynamic --jvm-target values when using --help flag This will now print values supported by the embedded Kotlin version and won't have to be updated manually anymore. --- .../io/gitlab/arturbosch/detekt/cli/ArgumentConverters.kt | 6 ++++++ .../main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt | 5 +++-- .../src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Spec.kt | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/ArgumentConverters.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/ArgumentConverters.kt index 0c8ad7c8a49..af299e59840 100644 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/ArgumentConverters.kt +++ b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/ArgumentConverters.kt @@ -2,6 +2,7 @@ package io.gitlab.arturbosch.detekt.cli import com.beust.jcommander.IStringConverter import com.beust.jcommander.ParameterException +import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.config.LanguageVersion import java.io.File import java.net.URL @@ -50,6 +51,11 @@ class LanguageVersionConverter : IStringConverter { checkNotNull(LanguageVersion.fromFullVersionString(value)) { "Invalid value passed to --language-version" } } +class JvmTargetConverter : IStringConverter { + override fun convert(value: String): JvmTarget = + checkNotNull(JvmTarget.fromString(value)) { "Invalid value passed to --jvm-target" } +} + class ClasspathResourceConverter : IStringConverter { override fun convert(resource: String): URL { val relativeResource = if (resource.startsWith("/")) resource else "/$resource" diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt index 4d2714a5d2d..76d89245a1d 100644 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt +++ b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt @@ -188,10 +188,11 @@ class CliArgs { @Parameter( names = ["--jvm-target"], + converter = JvmTargetConverter::class, description = "EXPERIMENTAL: Target version of the generated JVM bytecode that was generated during " + - "compilation and is now being used for type resolution (1.6, 1.8, 9, 10, 11, 12, 13, 14, 15, 16 or 17)" + "compilation and is now being used for type resolution" ) - var jvmTarget: String = JvmTarget.DEFAULT.description + var jvmTarget: JvmTarget = JvmTarget.DEFAULT @Parameter( names = ["--version"], diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Spec.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Spec.kt index a3347e86f13..0b569cc9683 100644 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Spec.kt +++ b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Spec.kt @@ -65,7 +65,7 @@ internal fun CliArgs.createSpec(output: Appendable, error: Appendable): Processi } compiler { - jvmTarget = args.jvmTarget + jvmTarget = args.jvmTarget.toString() languageVersion = args.languageVersion?.versionString classpath = args.classpath?.trim() }