From be3fea152ae5dcec5ba9a29d86a69010d6b2e428 Mon Sep 17 00:00:00 2001 From: Błażej Kardyś Date: Tue, 8 Sep 2020 12:10:59 +0200 Subject: Adding configuration mpp check for javadoc --- core/src/main/kotlin/CoreExtensions.kt | 2 ++ core/src/main/kotlin/DokkaGenerator.kt | 12 ++++++++++++ core/src/main/kotlin/validity/PreGenerationChecker.kt | 12 ++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 core/src/main/kotlin/validity/PreGenerationChecker.kt (limited to 'core/src') diff --git a/core/src/main/kotlin/CoreExtensions.kt b/core/src/main/kotlin/CoreExtensions.kt index b8689154..f5fb7604 100644 --- a/core/src/main/kotlin/CoreExtensions.kt +++ b/core/src/main/kotlin/CoreExtensions.kt @@ -9,9 +9,11 @@ import org.jetbrains.dokka.transformers.documentation.PreMergeDocumentableTransf import org.jetbrains.dokka.transformers.pages.PageCreator import org.jetbrains.dokka.transformers.pages.PageTransformer import org.jetbrains.dokka.transformers.sources.SourceToDocumentableTranslator +import org.jetbrains.dokka.validity.PreGenerationChecker import kotlin.reflect.KProperty object CoreExtensions { + val preGenerationCheck by coreExtension() val sourceToDocumentableTranslator by coreExtension() val preMergeDocumentableTransformer by coreExtension() val documentableMerger by coreExtension() diff --git a/core/src/main/kotlin/DokkaGenerator.kt b/core/src/main/kotlin/DokkaGenerator.kt index bee85325..b6216bdb 100644 --- a/core/src/main/kotlin/DokkaGenerator.kt +++ b/core/src/main/kotlin/DokkaGenerator.kt @@ -28,6 +28,9 @@ class DokkaGenerator( report("Initializing plugins") val context = initializePlugins(configuration, logger) + report("Validity check") + validityCheck(context) + report("Creating documentation models") val modulesFromPlatforms = createDocumentationModels(context) @@ -136,6 +139,15 @@ class DokkaGenerator( } } + fun validityCheck(context: DokkaContext) { + val (preGenerationCheckResult, checkMessages) = context[CoreExtensions.preGenerationCheck].fold( + Pair(true, emptyList()) + ) { acc, checker -> checker() + acc } + if (!preGenerationCheckResult) throw DokkaException( + "Pre-generation validity check failed: ${checkMessages.joinToString(",")}" + ) + } + private suspend fun translateSources(sourceSet: DokkaSourceSet, context: DokkaContext) = context[CoreExtensions.sourceToDocumentableTranslator].parallelMap { it.invoke(sourceSet, context) diff --git a/core/src/main/kotlin/validity/PreGenerationChecker.kt b/core/src/main/kotlin/validity/PreGenerationChecker.kt new file mode 100644 index 00000000..7cdad59b --- /dev/null +++ b/core/src/main/kotlin/validity/PreGenerationChecker.kt @@ -0,0 +1,12 @@ +package org.jetbrains.dokka.validity + +interface PreGenerationChecker : () -> PreGenerationCheckerOutput { + + override fun invoke(): PreGenerationCheckerOutput +} + +data class PreGenerationCheckerOutput(val result: Boolean, val messages: List) { + + operator fun plus(pair: Pair>) = + Pair(result && pair.first, messages + pair.second) +} \ No newline at end of file -- cgit