Skip to content

Commit d926037

Browse files
authored
use BCV-MU to check BCV-MU (#6)
* Apply BCV-MU * Hide some internal functionality with `@BCVInternalApi` * remove some unused code
1 parent 611d7f8 commit d926037

File tree

16 files changed

+166
-31
lines changed

16 files changed

+166
-31
lines changed

buildSrc/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ plugins {
77
dependencies {
88
implementation("org.gradle.kotlin:gradle-kotlin-dsl-plugins:$expectedKotlinDslPluginsVersion")
99

10+
implementation(libs.gradlePlugin.bcvMu)
1011
implementation(libs.gradlePlugin.pluginPublishing)
1112
implementation(libs.gradlePlugin.shadow)
1213
}

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ kotlinx-bcv = "0.13.0"
99

1010
gradlePluginPublishPlugin = "1.1.0"
1111
shadowPlugin = "8.1.0"
12+
bcvMu = "0.0.3"
1213

1314
supportedGradleVersion = "7.6" # the minimal supported Gradle plugin version, used in functional tests
1415

@@ -31,6 +32,7 @@ junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "jun
3132
## endregion
3233

3334
## region Gradle Plugins
35+
gradlePlugin-bcvMu = { module = "dev.adamko.kotlin.binary_compatibility_validator:bcv-gradle-plugin", version.ref = "bcvMu" }
3436
gradlePlugin-pluginPublishing = { module = "com.gradle.publish:plugin-publish-plugin", version.ref = "gradlePluginPublishPlugin" }
3537
gradlePlugin-shadow = { module = "com.github.johnrengelman:shadow", version.ref = "shadowPlugin" }
3638
## endregion
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
public abstract class dev/adamko/kotlin/binary_compatibility_validator/BCVPlugin : org/gradle/api/Plugin {
2+
public static final field API_DIR Ljava/lang/String;
3+
public static final field Companion Ldev/adamko/kotlin/binary_compatibility_validator/BCVPlugin$Companion;
4+
public static final field EXTENSION_NAME Ljava/lang/String;
5+
public static final field RUNTIME_CLASSPATH_CONFIGURATION_NAME Ljava/lang/String;
6+
public static final field TASK_GROUP Ljava/lang/String;
7+
public synthetic fun apply (Ljava/lang/Object;)V
8+
public fun apply (Lorg/gradle/api/plugins/PluginAware;)V
9+
}
10+
11+
public final class dev/adamko/kotlin/binary_compatibility_validator/BCVPlugin$Companion {
12+
}
13+
14+
public abstract interface class dev/adamko/kotlin/binary_compatibility_validator/BCVProjectExtension : dev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec, org/gradle/api/plugins/ExtensionAware {
15+
public abstract fun getEnabled ()Lorg/gradle/api/provider/Property;
16+
public abstract fun getIgnoredClasses ()Lorg/gradle/api/provider/SetProperty;
17+
public abstract fun getIgnoredMarkers ()Lorg/gradle/api/provider/SetProperty;
18+
public abstract fun getIgnoredPackages ()Lorg/gradle/api/provider/SetProperty;
19+
public abstract fun getKotlinxBinaryCompatibilityValidatorVersion ()Lorg/gradle/api/provider/Property;
20+
public abstract fun getNonPublicMarkers ()Lorg/gradle/api/provider/SetProperty;
21+
public abstract fun getOutputApiDir ()Lorg/gradle/api/file/DirectoryProperty;
22+
public abstract fun getProjectName ()Lorg/gradle/api/provider/Property;
23+
public abstract fun getTargets ()Lorg/gradle/api/NamedDomainObjectContainer;
24+
}
25+
26+
public abstract class dev/adamko/kotlin/binary_compatibility_validator/BCVProjectPlugin : org/gradle/api/Plugin {
27+
public synthetic fun apply (Ljava/lang/Object;)V
28+
public fun apply (Lorg/gradle/api/Project;)V
29+
}
30+
31+
public abstract class dev/adamko/kotlin/binary_compatibility_validator/BCVSettingsPlugin : org/gradle/api/Plugin {
32+
public synthetic fun apply (Ljava/lang/Object;)V
33+
public fun apply (Lorg/gradle/api/initialization/Settings;)V
34+
}
35+
36+
public abstract class dev/adamko/kotlin/binary_compatibility_validator/BCVSettingsPlugin$Extension {
37+
public fun <init> (Ldev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec;)V
38+
public final fun defaultTargetValues (Lkotlin/jvm/functions/Function1;)V
39+
public final fun getDefaultTargetValues ()Ldev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec;
40+
public abstract fun getIgnoredProjects ()Lorg/gradle/api/provider/SetProperty;
41+
}
42+
43+
public final class dev/adamko/kotlin/binary_compatibility_validator/BCVSettingsPlugin$apply$1$inlined$sam$i$org_gradle_api_Action$0 : org/gradle/api/Action {
44+
public fun <init> (Lkotlin/jvm/functions/Function1;)V
45+
public final synthetic fun execute (Ljava/lang/Object;)V
46+
}
47+
48+
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 {
49+
public fun <init> (Ljava/lang/String;)V
50+
public abstract fun getEnabled ()Lorg/gradle/api/provider/Property;
51+
public abstract fun getIgnoredClasses ()Lorg/gradle/api/provider/SetProperty;
52+
public abstract fun getIgnoredMarkers ()Lorg/gradle/api/provider/SetProperty;
53+
public abstract fun getIgnoredPackages ()Lorg/gradle/api/provider/SetProperty;
54+
public abstract fun getInputClasses ()Lorg/gradle/api/file/ConfigurableFileCollection;
55+
public abstract fun getInputJar ()Lorg/gradle/api/file/RegularFileProperty;
56+
public fun getName ()Ljava/lang/String;
57+
public final fun getPlatformType ()Ljava/lang/String;
58+
}
59+
60+
public abstract interface class dev/adamko/kotlin/binary_compatibility_validator/targets/BCVTargetSpec : java/io/Serializable {
61+
public abstract fun getEnabled ()Lorg/gradle/api/provider/Property;
62+
public abstract fun getIgnoredClasses ()Lorg/gradle/api/provider/SetProperty;
63+
public abstract fun getIgnoredMarkers ()Lorg/gradle/api/provider/SetProperty;
64+
public abstract fun getIgnoredPackages ()Lorg/gradle/api/provider/SetProperty;
65+
public abstract fun getInputClasses ()Lorg/gradle/api/file/ConfigurableFileCollection;
66+
public abstract fun getInputJar ()Lorg/gradle/api/file/RegularFileProperty;
67+
}
68+
69+
public abstract class dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVApiCheckTask : dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVDefaultTask {
70+
public abstract fun getApiBuildDir ()Lorg/gradle/api/file/DirectoryProperty;
71+
public abstract fun getExpectedApiDirPath ()Lorg/gradle/api/provider/Property;
72+
public final fun getProjectApiDir ()Lorg/gradle/api/provider/Provider;
73+
public final fun verify ()V
74+
}
75+
76+
public abstract class dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVApiDumpTask : dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVDefaultTask {
77+
public final fun action ()V
78+
public abstract fun getApiDirectory ()Lorg/gradle/api/file/DirectoryProperty;
79+
public abstract fun getApiDumpFiles ()Lorg/gradle/api/file/ConfigurableFileCollection;
80+
}
81+
82+
public abstract class dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVApiGenerateTask : dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVDefaultTask {
83+
public final fun generate ()V
84+
public abstract fun getInputDependencies ()Lorg/gradle/api/file/ConfigurableFileCollection;
85+
public abstract fun getOutputApiBuildDir ()Lorg/gradle/api/file/DirectoryProperty;
86+
public abstract fun getProjectName ()Lorg/gradle/api/provider/Property;
87+
public abstract fun getRuntimeClasspath ()Lorg/gradle/api/file/ConfigurableFileCollection;
88+
public abstract fun getTargets ()Lorg/gradle/api/NamedDomainObjectContainer;
89+
}
90+
91+
public abstract class dev/adamko/kotlin/binary_compatibility_validator/tasks/BCVDefaultTask : org/gradle/api/DefaultTask {
92+
public abstract fun getBcvEnabled ()Lorg/gradle/api/provider/Property;
93+
}
94+
95+
public final class dev/adamko/kotlin/binary_compatibility_validator/workers/BCVSignaturesWorker$Companion {
96+
}
97+
98+
public final class org/gradle/kotlin/dsl/BcvGradleDslAccessorsKt {
99+
public static final fun binaryCompatibilityValidator (Lorg/gradle/api/initialization/Settings;Lkotlin/jvm/functions/Function1;)V
100+
public static final fun getBinaryCompatibilityValidator (Lorg/gradle/api/initialization/Settings;)Ldev/adamko/kotlin/binary_compatibility_validator/BCVSettingsPlugin$Extension;
101+
}
102+

modules/bcv-gradle-plugin/build.gradle.kts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import buildsrc.utils.configurationNames
22
import buildsrc.utils.skipTestFixturesPublications
33
import org.gradle.api.attributes.plugin.GradlePluginApiVersion.GRADLE_PLUGIN_API_VERSION_ATTRIBUTE
4+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
45

56
plugins {
67
buildsrc.conventions.`kotlin-gradle-plugin`
78
buildsrc.conventions.`maven-publish-test`
89
`java-test-fixtures`
910
//com.github.johnrengelman.shadow
1011
//buildsrc.conventions.`gradle-plugin-variants`
12+
dev.adamko.kotlin.`binary-compatibility-validator`
1113
}
1214

1315
dependencies {
@@ -88,3 +90,15 @@ skipTestFixturesPublications()
8890
// isEnableRelocation = false
8991
// archiveClassifier.set("")
9092
//}
93+
94+
tasks.withType<KotlinCompile>().configureEach {
95+
kotlinOptions {
96+
freeCompilerArgs += listOf(
97+
"-opt-in=dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi"
98+
)
99+
}
100+
}
101+
102+
binaryCompatibilityValidator {
103+
ignoredMarkers.add("dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi")
104+
}

modules/bcv-gradle-plugin/src/main/kotlin/BCVPlugin.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package dev.adamko.kotlin.binary_compatibility_validator
22

3+
import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi
34
import org.gradle.api.Plugin
45
import org.gradle.api.Project
56
import org.gradle.api.initialization.Settings
67
import org.gradle.api.plugins.PluginAware
78
import org.gradle.kotlin.dsl.*
89

910

10-
abstract class BCVPlugin : Plugin<PluginAware> {
11+
abstract class BCVPlugin
12+
@BCVInternalApi
13+
constructor() : Plugin<PluginAware> {
1114
override fun apply(target: PluginAware) {
1215
when (target) {
1316
is Project -> target.pluginManager.apply(BCVProjectPlugin::class)

modules/bcv-gradle-plugin/src/main/kotlin/BCVProjectPlugin.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dev.adamko.kotlin.binary_compatibility_validator
33
import dev.adamko.kotlin.binary_compatibility_validator.BCVPlugin.Companion.API_DIR
44
import dev.adamko.kotlin.binary_compatibility_validator.BCVPlugin.Companion.EXTENSION_NAME
55
import dev.adamko.kotlin.binary_compatibility_validator.BCVPlugin.Companion.RUNTIME_CLASSPATH_CONFIGURATION_NAME
6+
import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi
67
import dev.adamko.kotlin.binary_compatibility_validator.internal.sourceSets
78
import dev.adamko.kotlin.binary_compatibility_validator.tasks.BCVApiCheckTask
89
import dev.adamko.kotlin.binary_compatibility_validator.tasks.BCVApiDumpTask
@@ -22,7 +23,10 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer
2223
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetsContainer
2324

2425

25-
abstract class BCVProjectPlugin @Inject constructor(
26+
abstract class BCVProjectPlugin
27+
@BCVInternalApi
28+
@Inject
29+
constructor(
2630
private val providers: ProviderFactory,
2731
private val layout: ProjectLayout,
2832
) : Plugin<Project> {

modules/bcv-gradle-plugin/src/main/kotlin/BCVSettingsPlugin.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.adamko.kotlin.binary_compatibility_validator
22

3+
import dev.adamko.kotlin.binary_compatibility_validator.internal.BCVInternalApi
34
import dev.adamko.kotlin.binary_compatibility_validator.internal.globToRegex
45
import dev.adamko.kotlin.binary_compatibility_validator.targets.BCVTargetSpec
56
import javax.inject.Inject
@@ -10,7 +11,10 @@ import org.gradle.api.model.ObjectFactory
1011
import org.gradle.api.provider.SetProperty
1112
import org.gradle.kotlin.dsl.*
1213

13-
abstract class BCVSettingsPlugin @Inject constructor(
14+
abstract class BCVSettingsPlugin
15+
@BCVInternalApi
16+
@Inject
17+
constructor(
1418
private val objects: ObjectFactory
1519
) : Plugin<Settings> {
1620

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
package dev.adamko.kotlin.binary_compatibility_validator.internal
22

3+
import kotlin.annotation.AnnotationTarget.*
4+
35

46
@RequiresOptIn(
57
"Internal API - may change at any time without notice",
68
level = RequiresOptIn.Level.WARNING
79
)
810
@Retention(AnnotationRetention.BINARY)
9-
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)
10-
annotation class BCVInternalApi
11+
@Target(
12+
CLASS,
13+
FUNCTION,
14+
PROPERTY,
15+
CONSTRUCTOR,
16+
)
17+
internal annotation class BCVInternalApi

modules/bcv-gradle-plugin/src/main/kotlin/internal/GradlePath.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package dev.adamko.kotlin.binary_compatibility_validator.internal
22

33
import org.gradle.api.Project
44

5-
typealias GradlePath = org.gradle.util.Path
5+
internal typealias GradlePath = org.gradle.util.Path
66

7-
fun GradlePath(path: String): GradlePath = GradlePath.path(path)
7+
internal fun GradlePath(path: String): GradlePath = GradlePath.path(path)
88

99
internal val Project.isRootProject get() = this == rootProject
1010

modules/bcv-gradle-plugin/src/main/kotlin/targets/BCVPlatformType.kt

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)