From 7bfab097f35f86bafbc2feff23e6658ad17da2ae Mon Sep 17 00:00:00 2001 From: Marcin Aman Date: Wed, 14 Apr 2021 21:51:16 +0200 Subject: Introduce binary compatibility plugin (#1774) * Introduce binary compatibility plugin * Update diffs --- .../kotlin/org/jetbrains/binaryCompatibility.kt | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt (limited to 'buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt') 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 { + ignoredProjects.addAll( + BinaryCompatibilityConfig.ignoredSubprojects.intersect(allprojects.map { it.name }) + ) + } + } + } +} \ No newline at end of file -- cgit