aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt
diff options
context:
space:
mode:
Diffstat (limited to 'buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt')
-rw-r--r--buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt31
1 files changed, 31 insertions, 0 deletions
diff --git a/buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt b/buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt
new file mode 100644
index 00000000..fb686e1d
--- /dev/null
+++ b/buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt
@@ -0,0 +1,31 @@
+package org.jetbrains
+
+import kotlinx.validation.ApiValidationExtension
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.configure
+
+internal object BinaryCompatibilityConfig {
+ val ignoredPublications = setOf("kotlinAnalysisIntelliJ", "kotlinAnalysis", "kotlinAnalysisCompiler")
+ val ignoredSubprojects = setOf(
+ "search-component",
+ "compiler-dependency",
+ "intellij-dependency",
+ "kotlin-analysis",
+ "frontend"
+ )
+}
+
+internal fun Project.registerBinaryCompatibilityCheck(publicationName: String) {
+ publicationName.takeIf {
+ it !in BinaryCompatibilityConfig.ignoredPublications
+ }?.let {
+ if (tasks.findByName("apiBuild") == null) {
+ plugins.apply(kotlinx.validation.BinaryCompatibilityValidatorPlugin::class.java)
+ configure<ApiValidationExtension> {
+ ignoredProjects.addAll(
+ BinaryCompatibilityConfig.ignoredSubprojects.intersect(allprojects.map { it.name })
+ )
+ }
+ }
+ }
+} \ No newline at end of file