[PowerAssert] Update Gradle extension to be more idiomatic
Instead of using raw List types in the Gradle extension, ListProperty should be used instead to make it more Gradle idiomatic. Also marking the extension and all properties as experimental to allow easier changing in the future. ^KT-65952 Fixed
This commit is contained in:
+2
-3
@@ -34,15 +34,14 @@ kotlin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
powerAssert {
|
powerAssert {
|
||||||
functions = listOf(
|
functions.addAll(
|
||||||
"kotlin.assert",
|
|
||||||
"kotlin.test.assertTrue",
|
"kotlin.test.assertTrue",
|
||||||
"kotlin.require",
|
"kotlin.require",
|
||||||
"sample.AssertScope.assert",
|
"sample.AssertScope.assert",
|
||||||
"sample.assert",
|
"sample.assert",
|
||||||
"sample.dbg"
|
"sample.dbg"
|
||||||
)
|
)
|
||||||
excludedSourceSets = listOf(
|
excludedSourceSets.addAll(
|
||||||
"commonMain",
|
"commonMain",
|
||||||
"jvmMain",
|
"jvmMain",
|
||||||
"jsMain",
|
"jsMain",
|
||||||
|
|||||||
+12
-3
@@ -19,7 +19,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.powerassert.gradle
|
package org.jetbrains.kotlin.powerassert.gradle
|
||||||
|
|
||||||
open class PowerAssertGradleExtension {
|
import org.gradle.api.model.ObjectFactory
|
||||||
var functions: List<String> = listOf("kotlin.assert")
|
import org.gradle.api.provider.ListProperty
|
||||||
var excludedSourceSets: List<String> = listOf()
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
abstract class PowerAssertGradleExtension @Inject constructor(
|
||||||
|
objectFactory: ObjectFactory,
|
||||||
|
) {
|
||||||
|
val functions: ListProperty<String> = objectFactory.listProperty(String::class.java).convention(listOf("kotlin.assert"))
|
||||||
|
|
||||||
|
val excludedSourceSets: ListProperty<String> = objectFactory.listProperty(String::class.java).convention(emptyList())
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-3
@@ -21,8 +21,10 @@ package org.jetbrains.kotlin.powerassert.gradle
|
|||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
|
|
||||||
|
@OptIn(ExperimentalKotlinGradlePluginApi::class)
|
||||||
class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin {
|
class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin {
|
||||||
companion object {
|
companion object {
|
||||||
private const val POWER_ASSERT_ARTIFACT_NAME = "kotlin-power-assert-compiler-plugin-embeddable"
|
private const val POWER_ASSERT_ARTIFACT_NAME = "kotlin-power-assert-compiler-plugin-embeddable"
|
||||||
@@ -37,7 +39,7 @@ class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin {
|
|||||||
override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean {
|
override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean {
|
||||||
val project = kotlinCompilation.target.project
|
val project = kotlinCompilation.target.project
|
||||||
val extension = project.extensions.getByType(PowerAssertGradleExtension::class.java)
|
val extension = project.extensions.getByType(PowerAssertGradleExtension::class.java)
|
||||||
return extension.excludedSourceSets.none { it == kotlinCompilation.defaultSourceSet.name }
|
return extension.excludedSourceSets.get().none { it == kotlinCompilation.defaultSourceSet.name }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun applyToCompilation(
|
override fun applyToCompilation(
|
||||||
@@ -45,8 +47,8 @@ class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin {
|
|||||||
): Provider<List<SubpluginOption>> {
|
): Provider<List<SubpluginOption>> {
|
||||||
val project = kotlinCompilation.target.project
|
val project = kotlinCompilation.target.project
|
||||||
val extension = project.extensions.getByType(PowerAssertGradleExtension::class.java)
|
val extension = project.extensions.getByType(PowerAssertGradleExtension::class.java)
|
||||||
return project.provider {
|
return extension.functions.map { functions ->
|
||||||
extension.functions.map {
|
functions.map {
|
||||||
SubpluginOption(key = FUNCTION_ARG_NAME, value = it)
|
SubpluginOption(key = FUNCTION_ARG_NAME, value = it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user