aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/main/kotlin
diff options
context:
space:
mode:
authorMarcin Aman <marcin.aman@gmail.com>2021-04-14 21:51:16 +0200
committerGitHub <noreply@github.com>2021-04-14 21:51:16 +0200
commit7bfab097f35f86bafbc2feff23e6658ad17da2ae (patch)
tree62528c2763cdb5bd02c8eeff17a772e22462051a /buildSrc/src/main/kotlin
parent38270a3b8783857bd0bba4b9422b19b4de507e4c (diff)
downloaddokka-7bfab097f35f86bafbc2feff23e6658ad17da2ae.tar.gz
dokka-7bfab097f35f86bafbc2feff23e6658ad17da2ae.tar.bz2
dokka-7bfab097f35f86bafbc2feff23e6658ad17da2ae.zip
Introduce binary compatibility plugin (#1774)
* Introduce binary compatibility plugin * Update diffs
Diffstat (limited to 'buildSrc/src/main/kotlin')
-rw-r--r--buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt31
-rw-r--r--buildSrc/src/main/kotlin/org/jetbrains/publication.kt7
2 files changed, 34 insertions, 4 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
diff --git a/buildSrc/src/main/kotlin/org/jetbrains/publication.kt b/buildSrc/src/main/kotlin/org/jetbrains/publication.kt
index 6c2f71a6..82102467 100644
--- a/buildSrc/src/main/kotlin/org/jetbrains/publication.kt
+++ b/buildSrc/src/main/kotlin/org/jetbrains/publication.kt
@@ -2,15 +2,13 @@ package org.jetbrains
import com.github.jengelman.gradle.plugins.shadow.ShadowExtension
import com.jfrog.bintray.gradle.BintrayExtension
+import kotlinx.validation.ApiValidationExtension
import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
-import org.gradle.kotlin.dsl.configure
-import org.gradle.kotlin.dsl.get
-import org.gradle.kotlin.dsl.register
-import org.gradle.kotlin.dsl.withType
+import org.gradle.kotlin.dsl.*
import org.gradle.plugins.signing.SigningExtension
import org.jetbrains.DokkaPublicationChannel.*
import java.net.URI
@@ -47,6 +45,7 @@ fun Project.registerDokkaArtifactPublication(publicationName: String, configure:
configureBintrayPublicationIfNecessary(publicationName)
configureSpacePublicationIfNecessary(publicationName)
createDokkaPublishTaskIfNecessary()
+ registerBinaryCompatibilityCheck(publicationName)
}
fun Project.configureSpacePublicationIfNecessary(vararg publications: String) {