diff --git a/buildSrc/src/main/kotlin/BinaryCompatibilityConfigurator.kt b/buildSrc/src/main/kotlin/BinaryCompatibilityConfigurator.kt index 2ed88a169..00a8499f5 100644 --- a/buildSrc/src/main/kotlin/BinaryCompatibilityConfigurator.kt +++ b/buildSrc/src/main/kotlin/BinaryCompatibilityConfigurator.kt @@ -46,17 +46,23 @@ object BinaryCompatibilityConfigurator { private fun Project.getValidatorDir(dir: File) = ":validator" + project.path + ":${dir.name}" + private fun File.writeTextIfNeeded(text: String) { + if (!this.exists()) return this.writeText(text) + if (this.readText() == text) return + return this.writeText(text) + } + /** * @param targetName `null` for JVM projects. */ fun createValidator(project: Project, dir: File, targetName: String?) { - dir.resolve("build.gradle.kts").writeText( + dir.resolve("build.gradle.kts").writeTextIfNeeded( applyTemplate( project.path, if (targetName == null) "classes/kotlin/main" else "classes/kotlin/$targetName/main" ) ) - dir.resolve(".gitignore").writeText( + dir.resolve(".gitignore").writeTextIfNeeded( this::class.java.classLoader .getResourceAsStream("binary-compatibility-validator-ignore.txt")!!.readBytes().decodeToString() ) @@ -78,4 +84,4 @@ object BinaryCompatibilityConfigurator { .replace("$\$BUILD_DIR$$", buildDir) .replace("$\$PLUGIN_VERSION$$", Versions.binaryValidator) } -} \ No newline at end of file +}