diff --git a/README.md b/README.md index c9f5ec9..ca01308 100644 --- a/README.md +++ b/README.md @@ -119,9 +119,15 @@ binaryCompatibilityValidator { // Or overridden ignoredClasses.set(listOf()) } + + // BCV will automatically register a target for testFixtures, but it must be enabled manually + targets.named("testFixtures") { + enabled.set(true) + } + // BCV Targets can also be manually defined - targets.register("testFixtures") { - inputJar.set(tasks.testFixturesJar) + targets.register("customTarget") { + inputJar.set(tasks.customTargetJar.flatMap { it.archiveFile }) } } ``` diff --git a/build.gradle.kts b/build.gradle.kts index 85f0f34..83d923b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "dev.adamko.kotlin.binary_compatibility_validator" -version = "0.0.3" +version = "0.0.4" idea { module { diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 06d5b9e..2e44743 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -7,6 +7,7 @@ plugins { dependencies { implementation("org.gradle.kotlin:gradle-kotlin-dsl-plugins:$expectedKotlinDslPluginsVersion") + implementation(libs.gradlePlugin.bcvMu) implementation(libs.gradlePlugin.pluginPublishing) implementation(libs.gradlePlugin.shadow) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 249494c..572511c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,6 +9,7 @@ kotlinx-bcv = "0.13.0" gradlePluginPublishPlugin = "1.1.0" shadowPlugin = "8.1.0" +bcvMu = "0.0.3" supportedGradleVersion = "7.6" # the minimal supported Gradle plugin version, used in functional tests @@ -31,6 +32,7 @@ junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "jun ## endregion ## region Gradle Plugins +gradlePlugin-bcvMu = { module = "dev.adamko.kotlin.binary_compatibility_validator:bcv-gradle-plugin", version.ref = "bcvMu" } gradlePlugin-pluginPublishing = { module = "com.gradle.publish:plugin-publish-plugin", version.ref = "gradlePluginPublishPlugin" } gradlePlugin-shadow = { module = "com.github.johnrengelman:shadow", version.ref = "shadowPlugin" } ## endregion diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/JavaTestFixturesTest.kt b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/JavaTestFixturesTest.kt index 81d0eb9..82393cb 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/JavaTestFixturesTest.kt +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/JavaTestFixturesTest.kt @@ -125,7 +125,7 @@ private fun FunSpec.createTestFixturesProject( buildGradleKts = """ |plugins { | kotlin("jvm") version "1.7.10" - | id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + | id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" | `java-test-fixtures` |} | diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/SettingsPluginDslTest.kt b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/SettingsPluginDslTest.kt index d0f9f1c..5712881 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/SettingsPluginDslTest.kt +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/kotlin/kotlinx/validation/test/SettingsPluginDslTest.kt @@ -154,7 +154,7 @@ buildscript { plugins { - id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" } include( diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidJavaLibrary.gradle.kts b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidJavaLibrary.gradle.kts index 7d7c399..69f1cf6 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidJavaLibrary.gradle.kts +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidJavaLibrary.gradle.kts @@ -6,7 +6,7 @@ plugins { id("com.android.library") //id("org.jetbrains.kotlinx.binary-compatibility-validator") - id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" } android { diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidKotlinLibrary.gradle.kts b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidKotlinLibrary.gradle.kts index b3bddc2..dc0e490 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidKotlinLibrary.gradle.kts +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidKotlinLibrary.gradle.kts @@ -7,7 +7,7 @@ plugins { id("com.android.library") id("kotlin-android") //id("org.jetbrains.kotlinx.binary-compatibility-validator") - id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" } android { diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidProjectRoot.gradle.kts b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidProjectRoot.gradle.kts index 7c3e861..21d659f 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidProjectRoot.gradle.kts +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/androidProjectRoot.gradle.kts @@ -3,7 +3,7 @@ plugins { id("com.android.library").version("7.2.2").apply(false) id("org.jetbrains.kotlin.android").version("1.7.10").apply(false) //id("org.jetbrains.kotlinx.binary-compatibility-validator").apply(false) - id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" apply false + id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" apply false } tasks.register("clean", Delete::class) { diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/multiplatformWithJvmTargets.gradle.kts b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/multiplatformWithJvmTargets.gradle.kts index 932ffe3..5dce66b 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/multiplatformWithJvmTargets.gradle.kts +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/multiplatformWithJvmTargets.gradle.kts @@ -6,7 +6,7 @@ plugins { kotlin("multiplatform") version "1.5.20" //id("org.jetbrains.kotlinx.binary-compatibility-validator") - id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" } //repositories { diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/multiplatformWithSingleJvmTarget.gradle.kts b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/multiplatformWithSingleJvmTarget.gradle.kts index b934e1c..f5b64e6 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/multiplatformWithSingleJvmTarget.gradle.kts +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/multiplatformWithSingleJvmTarget.gradle.kts @@ -6,7 +6,7 @@ plugins { kotlin("multiplatform") version "1.7.20" //id("org.jetbrains.kotlinx.binary-compatibility-validator") - id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" } //repositories { diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/withPlugin-noKotlinVersion.gradle.kts b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/withPlugin-noKotlinVersion.gradle.kts index fa7826c..c84f729 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/withPlugin-noKotlinVersion.gradle.kts +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/withPlugin-noKotlinVersion.gradle.kts @@ -6,7 +6,7 @@ plugins { kotlin("jvm") //id("org.jetbrains.kotlinx.binary-compatibility-validator") - id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" } //repositories { diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/withPlugin.gradle.kts b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/withPlugin.gradle.kts index 8c3cf71..2e78038 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/withPlugin.gradle.kts +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest/resources/examples/gradle/base/withPlugin.gradle.kts @@ -6,7 +6,7 @@ plugins { kotlin("jvm") version "1.7.20" //id("org.jetbrains.kotlinx.binary-compatibility-validator") - id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" } //repositories { diff --git a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest2/kotlin/DefaultConfigTests.kt b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest2/kotlin/DefaultConfigTests.kt index d21c144..75f2375 100644 --- a/modules/bcv-gradle-plugin-functional-tests/src/functionalTest2/kotlin/DefaultConfigTests.kt +++ b/modules/bcv-gradle-plugin-functional-tests/src/functionalTest2/kotlin/DefaultConfigTests.kt @@ -23,7 +23,7 @@ internal class DefaultConfigTests : FunSpec({ buildGradleKts += """ |plugins { | kotlin("jvm") version "1.7.20" - | id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.3" + | id("dev.adamko.kotlin.binary-compatibility-validator") version "0.0.4-SNAPSHOT" |} | """.trimMargin() diff --git a/modules/bcv-gradle-plugin/api/bcv-gradle-plugin.api b/modules/bcv-gradle-plugin/api/bcv-gradle-plugin.api new file mode 100644 index 0000000..ba8725b --- /dev/null +++ b/modules/bcv-gradle-plugin/api/bcv-gradle-plugin.api @@ -0,0 +1,102 @@ +public abstract class dev/adamko/kotlin/binary_compatibility_validator/BCVPlugin : org/gradle/api/Plugin { + public static final field API_DIR Ljava/lang/String; + public static final field Companion Ldev/adamko/kotlin/binary_compatibility_validator/BCVPlugin$Companion; + public static final field EXTENSION_NAME Ljava/lang/String; + public static final field RUNTIME_CLASSPATH_CONFIGURATION_NAME Ljava/lang/String; + public static final field TASK_GROUP Ljava/lang/String; + public synthetic fun apply (Ljava/lang/Object;)V + public fun apply (Lorg/gradle/api/plugins/PluginAware;)V +} + +public final class dev/adamko/kotlin/binary_compatibility_validator/BCVPlugin$Companion { +} + +public abstract interface class dev/adamko/kotlin/binary_compatibility_validator/BCVProjectExtension : dev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec, org/gradle/api/plugins/ExtensionAware { + public abstract fun getEnabled ()Lorg/gradle/api/provider/Property; + public abstract fun getIgnoredClasses ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getIgnoredMarkers ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getIgnoredPackages ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getKotlinxBinaryCompatibilityValidatorVersion ()Lorg/gradle/api/provider/Property; + public abstract fun getNonPublicMarkers ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getOutputApiDir ()Lorg/gradle/api/file/DirectoryProperty; + public abstract fun getProjectName ()Lorg/gradle/api/provider/Property; + public abstract fun getTargets ()Lorg/gradle/api/NamedDomainObjectContainer; +} + +public abstract class dev/adamko/kotlin/binary_compatibility_validator/BCVProjectPlugin : org/gradle/api/Plugin { + public synthetic fun apply (Ljava/lang/Object;)V + public fun apply (Lorg/gradle/api/Project;)V +} + +public abstract class dev/adamko/kotlin/binary_compatibility_validator/BCVSettingsPlugin : org/gradle/api/Plugin { + public synthetic fun apply (Ljava/lang/Object;)V + public fun apply (Lorg/gradle/api/initialization/Settings;)V +} + +public abstract class dev/adamko/kotlin/binary_compatibility_validator/BCVSettingsPlugin$Extension { + public fun (Ldev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec;)V + public final fun defaultTargetValues (Lkotlin/jvm/functions/Function1;)V + public final fun getDefaultTargetValues ()Ldev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec; + public abstract fun getIgnoredProjects ()Lorg/gradle/api/provider/SetProperty; +} + +public final class dev/adamko/kotlin/binary_compatibility_validator/BCVSettingsPlugin$apply$1$inlined$sam$i$org_gradle_api_Action$0 : org/gradle/api/Action { + public fun (Lkotlin/jvm/functions/Function1;)V + public final synthetic fun execute (Ljava/lang/Object;)V +} + +public abstract class dev/adamko/kotlin/binary_compatibility_validator/targets/BCVTarget : dev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec, java/io/Serializable, org/gradle/api/Named { + public fun (Ljava/lang/String;)V + public abstract fun getEnabled ()Lorg/gradle/api/provider/Property; + public abstract fun getIgnoredClasses ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getIgnoredMarkers ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getIgnoredPackages ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getInputClasses ()Lorg/gradle/api/file/ConfigurableFileCollection; + public abstract fun getInputJar ()Lorg/gradle/api/file/RegularFileProperty; + public fun getName ()Ljava/lang/String; + public final fun getPlatformType ()Ljava/lang/String; +} + +public abstract interface class dev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec : java/io/Serializable { + public abstract fun getEnabled ()Lorg/gradle/api/provider/Property; + public abstract fun getIgnoredClasses ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getIgnoredMarkers ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getIgnoredPackages ()Lorg/gradle/api/provider/SetProperty; + public abstract fun getInputClasses ()Lorg/gradle/api/file/ConfigurableFileCollection; + public abstract fun getInputJar ()Lorg/gradle/api/file/RegularFileProperty; +} + +public abstract class dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVApiCheckTask : dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVDefaultTask { + public abstract fun getApiBuildDir ()Lorg/gradle/api/file/DirectoryProperty; + public abstract fun getExpectedApiDirPath ()Lorg/gradle/api/provider/Property; + public final fun getProjectApiDir ()Lorg/gradle/api/provider/Provider; + public final fun verify ()V +} + +public abstract class dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVApiDumpTask : dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVDefaultTask { + public final fun action ()V + public abstract fun getApiDirectory ()Lorg/gradle/api/file/DirectoryProperty; + public abstract fun getApiDumpFiles ()Lorg/gradle/api/file/ConfigurableFileCollection; +} + +public abstract class dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVApiGenerateTask : dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVDefaultTask { + public final fun generate ()V + public abstract fun getInputDependencies ()Lorg/gradle/api/file/ConfigurableFileCollection; + public abstract fun getOutputApiBuildDir ()Lorg/gradle/api/file/DirectoryProperty; + public abstract fun getProjectName ()Lorg/gradle/api/provider/Property; + public abstract fun getRuntimeClasspath ()Lorg/gradle/api/file/ConfigurableFileCollection; + public abstract fun getTargets ()Lorg/gradle/api/NamedDomainObjectContainer; +} + +public abstract class dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVDefaultTask : org/gradle/api/DefaultTask { + public abstract fun getBcvEnabled ()Lorg/gradle/api/provider/Property; +} + +public final class dev/adamko/kotlin/binary_compatibility_validator/workers/BCVSignaturesWorker$Companion { +} + +public final class org/gradle/kotlin/dsl/BcvGradleDslAccessorsKt { + public static final fun binaryCompatibilityValidator (Lorg/gradle/api/initialization/Settings;Lkotlin/jvm/functions/Function1;)V + public static final fun getBinaryCompatibilityValidator (Lorg/gradle/api/initialization/Settings;)Ldev/adamko/kotlin/binary_compatibility_validator/BCVSettingsPlugin$Extension; +} + diff --git a/modules/bcv-gradle-plugin/build.gradle.kts b/modules/bcv-gradle-plugin/build.gradle.kts index d7c6a7c..4cbcfde 100644 --- a/modules/bcv-gradle-plugin/build.gradle.kts +++ b/modules/bcv-gradle-plugin/build.gradle.kts @@ -1,6 +1,7 @@ import buildsrc.utils.configurationNames import buildsrc.utils.skipTestFixturesPublications import org.gradle.api.attributes.plugin.GradlePluginApiVersion.GRADLE_PLUGIN_API_VERSION_ATTRIBUTE +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { buildsrc.conventions.`kotlin-gradle-plugin` @@ -8,6 +9,7 @@ plugins { `java-test-fixtures` //com.github.johnrengelman.shadow //buildsrc.conventions.`gradle-plugin-variants` + dev.adamko.kotlin.`binary-compatibility-validator` } dependencies { @@ -88,3 +90,15 @@ skipTestFixturesPublications() // isEnableRelocation = false // archiveClassifier.set("") //} + +tasks.withType().configureEach { + kotlinOptions { + freeCompilerArgs += listOf( + "-opt-in=dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi" + ) + } +} + +binaryCompatibilityValidator { + ignoredMarkers.add("dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi") +} diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/BCVPlugin.kt b/modules/bcv-gradle-plugin/src/main/kotlin/BCVPlugin.kt index 9c1bc01..8eeac8e 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/BCVPlugin.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/BCVPlugin.kt @@ -1,5 +1,6 @@ package dev.adamko.kotlin.binary_compatibility_validator +import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.initialization.Settings @@ -7,7 +8,9 @@ import org.gradle.api.plugins.PluginAware import org.gradle.kotlin.dsl.* -abstract class BCVPlugin : Plugin { +abstract class BCVPlugin +@BCVInternalApi +constructor() : Plugin { override fun apply(target: PluginAware) { when (target) { is Project -> target.pluginManager.apply(BCVProjectPlugin::class) diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/BCVProjectPlugin.kt b/modules/bcv-gradle-plugin/src/main/kotlin/BCVProjectPlugin.kt index accd60b..b9b6615 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/BCVProjectPlugin.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/BCVProjectPlugin.kt @@ -3,6 +3,7 @@ package dev.adamko.kotlin.binary_compatibility_validator import dev.adamko.kotlin.binary_compatibility_validator.BCVPlugin.Companion.API_DIR import dev.adamko.kotlin.binary_compatibility_validator.BCVPlugin.Companion.EXTENSION_NAME import dev.adamko.kotlin.binary_compatibility_validator.BCVPlugin.Companion.RUNTIME_CLASSPATH_CONFIGURATION_NAME +import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi import dev.adamko.kotlin.binary_compatibility_validator.internal.sourceSets import dev.adamko.kotlin.binary_compatibility_validator.tasks.BCVApiCheckTask import dev.adamko.kotlin.binary_compatibility_validator.tasks.BCVApiDumpTask @@ -22,7 +23,10 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer import org.jetbrains.kotlin.gradle.plugin.KotlinTargetsContainer -abstract class BCVProjectPlugin @Inject constructor( +abstract class BCVProjectPlugin +@BCVInternalApi +@Inject +constructor( private val providers: ProviderFactory, private val layout: ProjectLayout, ) : Plugin { @@ -182,9 +186,9 @@ abstract class BCVProjectPlugin @Inject constructor( extension: BCVProjectExtension, ) { project.pluginManager.withPlugin("java-test-fixtures") { - extension.targets.create(TEST_FIXTURE_SOURCESET_NAME) { + extension.targets.register(TEST_FIXTURE_SOURCESET_NAME) { // don't enable by default - requiring an API spec for test-fixtures is pretty unusual - enabled.set(false) + enabled.convention(false) project .sourceSets .matching { it.name == TEST_FIXTURE_SOURCESET_NAME } diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/BCVSettingsPlugin.kt b/modules/bcv-gradle-plugin/src/main/kotlin/BCVSettingsPlugin.kt index 1386b97..ed01a2e 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/BCVSettingsPlugin.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/BCVSettingsPlugin.kt @@ -1,5 +1,6 @@ package dev.adamko.kotlin.binary_compatibility_validator +import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi import dev.adamko.kotlin.binary_compatibility_validator.internal.globToRegex import dev.adamko.kotlin.binary_compatibility_validator.targets.BCVTargetSpec import javax.inject.Inject @@ -10,7 +11,10 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.SetProperty import org.gradle.kotlin.dsl.* -abstract class BCVSettingsPlugin @Inject constructor( +abstract class BCVSettingsPlugin +@BCVInternalApi +@Inject +constructor( private val objects: ObjectFactory ) : Plugin { diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/internal/BCVInternalApi.kt b/modules/bcv-gradle-plugin/src/main/kotlin/internal/BCVInternalApi.kt index 9b39b24..0d95251 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/internal/BCVInternalApi.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/internal/BCVInternalApi.kt @@ -1,10 +1,17 @@ package dev.adamko.kotlin.binary_compatibility_validator.internal +import kotlin.annotation.AnnotationTarget.* + @RequiresOptIn( "Internal API - may change at any time without notice", level = RequiresOptIn.Level.WARNING ) @Retention(AnnotationRetention.BINARY) -@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY) -annotation class BCVInternalApi +@Target( + CLASS, + FUNCTION, + PROPERTY, + CONSTRUCTOR, +) +internal annotation class BCVInternalApi diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/internal/GradlePath.kt b/modules/bcv-gradle-plugin/src/main/kotlin/internal/GradlePath.kt index 6ff1152..f633c57 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/internal/GradlePath.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/internal/GradlePath.kt @@ -2,9 +2,9 @@ package dev.adamko.kotlin.binary_compatibility_validator.internal import org.gradle.api.Project -typealias GradlePath = org.gradle.util.Path +internal typealias GradlePath = org.gradle.util.Path -fun GradlePath(path: String): GradlePath = GradlePath.path(path) +internal fun GradlePath(path: String): GradlePath = GradlePath.path(path) internal val Project.isRootProject get() = this == rootProject diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/targets/BCVPlatformType.kt b/modules/bcv-gradle-plugin/src/main/kotlin/targets/BCVPlatformType.kt deleted file mode 100644 index 5167e32..0000000 --- a/modules/bcv-gradle-plugin/src/main/kotlin/targets/BCVPlatformType.kt +++ /dev/null @@ -1,13 +0,0 @@ -package dev.adamko.kotlin.binary_compatibility_validator.targets - -import java.io.Serializable -import javax.inject.Inject -import org.gradle.api.Named -import org.gradle.api.tasks.Input - -abstract class BCVPlatformType @Inject constructor( - private val name: String -) : Serializable, Named { - @Input - override fun getName(): String = name -} diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/targets/BCVTarget.kt b/modules/bcv-gradle-plugin/src/main/kotlin/targets/BCVTarget.kt index 7faedd5..733f87f 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/targets/BCVTarget.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/targets/BCVTarget.kt @@ -9,7 +9,9 @@ import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.* -abstract class BCVTarget @Inject constructor( +abstract class BCVTarget +@Inject +constructor( /** * The JVM platform being targeted. * diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiCheckTask.kt b/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiCheckTask.kt index 61105e3..8d80773 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiCheckTask.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiCheckTask.kt @@ -2,6 +2,7 @@ package dev.adamko.kotlin.binary_compatibility_validator.tasks import com.github.difflib.DiffUtils import com.github.difflib.UnifiedDiffUtils +import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi import dev.adamko.kotlin.binary_compatibility_validator.internal.GradlePath import dev.adamko.kotlin.binary_compatibility_validator.internal.fullPath import java.io.* @@ -16,7 +17,10 @@ import org.gradle.api.provider.ProviderFactory import org.gradle.api.tasks.* @CacheableTask -abstract class BCVApiCheckTask @Inject constructor( +abstract class BCVApiCheckTask +@BCVInternalApi +@Inject +constructor( private val objects: ObjectFactory, private val providers: ProviderFactory, ) : BCVDefaultTask() { @@ -147,12 +151,6 @@ abstract class BCVApiCheckTask @Inject constructor( ) return diff.joinToString("\n") } - - companion object { -// private fun setOfRelativePaths() = TreeSet { rp1, rp2 -> -// rp1.toString().compareTo(rp2.toString(), true) -// } - } } /* diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiDumpTask.kt b/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiDumpTask.kt index da022d1..ee8f7eb 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiDumpTask.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiDumpTask.kt @@ -1,5 +1,6 @@ package dev.adamko.kotlin.binary_compatibility_validator.tasks +import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi import javax.inject.Inject import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.DirectoryProperty @@ -7,7 +8,10 @@ import org.gradle.api.file.FileSystemOperations import org.gradle.api.tasks.* @CacheableTask -abstract class BCVApiDumpTask @Inject constructor( +abstract class BCVApiDumpTask +@BCVInternalApi +@Inject +constructor( private val fs: FileSystemOperations ) : BCVDefaultTask() { diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiGenerateTask.kt b/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiGenerateTask.kt index 230bea4..dc25ed6 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiGenerateTask.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVApiGenerateTask.kt @@ -15,7 +15,10 @@ import org.gradle.workers.WorkQueue import org.gradle.workers.WorkerExecutor @CacheableTask -abstract class BCVApiGenerateTask @Inject constructor( +abstract class BCVApiGenerateTask +@BCVInternalApi +@Inject +constructor( private val workers: WorkerExecutor, private val fs: FileSystemOperations, ) : BCVDefaultTask() { diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVDefaultTask.kt b/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVDefaultTask.kt index 5bb2d7b..026d021 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVDefaultTask.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/tasks/BCVDefaultTask.kt @@ -1,13 +1,16 @@ package dev.adamko.kotlin.binary_compatibility_validator.tasks import dev.adamko.kotlin.binary_compatibility_validator.BCVPlugin +import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi import org.gradle.api.DefaultTask import org.gradle.api.provider.Property import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Input @CacheableTask -abstract class BCVDefaultTask : DefaultTask() { +abstract class BCVDefaultTask +@BCVInternalApi +constructor() : DefaultTask() { @get:Input abstract val bcvEnabled: Property diff --git a/modules/bcv-gradle-plugin/src/main/kotlin/workers/BCVSignaturesWorker.kt b/modules/bcv-gradle-plugin/src/main/kotlin/workers/BCVSignaturesWorker.kt index 9723ea0..b5b4c41 100644 --- a/modules/bcv-gradle-plugin/src/main/kotlin/workers/BCVSignaturesWorker.kt +++ b/modules/bcv-gradle-plugin/src/main/kotlin/workers/BCVSignaturesWorker.kt @@ -18,6 +18,7 @@ abstract class BCVSignaturesWorker : WorkAction private val logger = Logging.getLogger(this::class.java) + @BCVInternalApi interface Parameters : WorkParameters { val outputApiDir: DirectoryProperty