aboutsummaryrefslogtreecommitdiff
path: root/runners/gradle-plugin/src/main
diff options
context:
space:
mode:
authorsebastian.sellmair <sebastian.sellmair@jetbrains.com>2020-08-10 14:41:33 +0200
committerSebastian Sellmair <34319766+sellmair@users.noreply.github.com>2020-08-14 17:51:11 +0200
commit33d962a55a559aa706649c29d9dd85d724cc37d9 (patch)
treeadbfda8bf9460d9c0f829f6ef3c93b44aa6656e8 /runners/gradle-plugin/src/main
parent5ab8e5ffe15714886ba5fea81748241a9123d13f (diff)
downloaddokka-33d962a55a559aa706649c29d9dd85d724cc37d9.tar.gz
dokka-33d962a55a559aa706649c29d9dd85d724cc37d9.tar.bz2
dokka-33d962a55a559aa706649c29d9dd85d724cc37d9.zip
Handle wrongly implemented `DokkaMultiModuleFileLayout`
Diffstat (limited to 'runners/gradle-plugin/src/main')
-rw-r--r--runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleFileLayout.kt18
1 files changed, 15 insertions, 3 deletions
diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleFileLayout.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleFileLayout.kt
index bb48ba2a..e3b82e7c 100644
--- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleFileLayout.kt
+++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleFileLayout.kt
@@ -1,5 +1,6 @@
package org.jetbrains.dokka.gradle
+import org.jetbrains.dokka.DokkaException
import java.io.File
/**
@@ -59,14 +60,25 @@ internal fun DokkaMultiModuleTask.copyChildOutputDirectory(child: AbstractDokkaT
val targetChildOutputDirectory = project.file(fileLayout.targetChildOutputDirectory(this, child))
val sourceChildOutputDirectory = child.outputDirectory.getSafe()
- if (!sourceChildOutputDirectory.exists()) {
+ /* Pointing to the same directory -> No copy necessary */
+ if (sourceChildOutputDirectory.absoluteFile == targetChildOutputDirectory.absoluteFile) {
return
}
- if (sourceChildOutputDirectory.absoluteFile == targetChildOutputDirectory.absoluteFile) {
+ /* Cannot target *inside* the original folder */
+ if (targetChildOutputDirectory.absoluteFile.startsWith(sourceChildOutputDirectory.absoluteFile)) {
+ throw DokkaException(
+ "Cannot re-locate output directory into itself.\n" +
+ "sourceChildOutputDirectory=${sourceChildOutputDirectory.path}\n" +
+ "targetChildOutputDirectory=${targetChildOutputDirectory.path}"
+ )
+ }
+
+ /* Source output directory is empty -> No copy necessary */
+ if (!sourceChildOutputDirectory.exists()) {
return
}
- sourceChildOutputDirectory.copyRecursively(targetChildOutputDirectory, overwrite = false)
+ sourceChildOutputDirectory.copyRecursively(targetChildOutputDirectory, overwrite = true)
}