diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/api/core.api | 24 | ||||
-rw-r--r-- | core/src/main/kotlin/utilities/DokkaLogging.kt | 59 | ||||
-rw-r--r-- | core/test-api/api/test-api.api | 23 | ||||
-rw-r--r-- | core/test-api/src/main/kotlin/testApi/context/MockContext.kt | 3 | ||||
-rw-r--r-- | core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt | 31 |
5 files changed, 72 insertions, 68 deletions
diff --git a/core/api/core.api b/core/api/core.api index 7c74a922..82b58711 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -4197,10 +4197,13 @@ public final class org/jetbrains/dokka/utilities/AssociateWithNotNullKt { } public final class org/jetbrains/dokka/utilities/DokkaConsoleLogger : org/jetbrains/dokka/utilities/DokkaLogger { - public static final field INSTANCE Lorg/jetbrains/dokka/utilities/DokkaConsoleLogger; + public fun <init> ()V + public fun <init> (Lorg/jetbrains/dokka/utilities/LoggingLevel;Lorg/jetbrains/dokka/utilities/MessageEmitter;)V + public synthetic fun <init> (Lorg/jetbrains/dokka/utilities/LoggingLevel;Lorg/jetbrains/dokka/utilities/MessageEmitter;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun debug (Ljava/lang/String;)V public fun error (Ljava/lang/String;)V public fun getErrorsCount ()I + public final fun getMinLevel ()Lorg/jetbrains/dokka/utilities/LoggingLevel; public fun getWarningsCount ()I public fun info (Ljava/lang/String;)V public fun progress (Ljava/lang/String;)V @@ -4236,6 +4239,25 @@ public final class org/jetbrains/dokka/utilities/JsonKt { public static final fun toJsonString (Ljava/lang/Object;)Ljava/lang/String; } +public final class org/jetbrains/dokka/utilities/LoggingLevel : java/lang/Enum { + public static final field DEBUG Lorg/jetbrains/dokka/utilities/LoggingLevel; + public static final field ERROR Lorg/jetbrains/dokka/utilities/LoggingLevel; + public static final field INFO Lorg/jetbrains/dokka/utilities/LoggingLevel; + public static final field PROGRESS Lorg/jetbrains/dokka/utilities/LoggingLevel; + public static final field WARN Lorg/jetbrains/dokka/utilities/LoggingLevel; + public final fun getIndex ()I + public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/dokka/utilities/LoggingLevel; + public static fun values ()[Lorg/jetbrains/dokka/utilities/LoggingLevel; +} + +public abstract interface class org/jetbrains/dokka/utilities/MessageEmitter : kotlin/jvm/functions/Function1 { + public static final field Companion Lorg/jetbrains/dokka/utilities/MessageEmitter$Companion; +} + +public final class org/jetbrains/dokka/utilities/MessageEmitter$Companion { + public final fun getConsoleEmitter ()Lorg/jetbrains/dokka/utilities/MessageEmitter; +} + public final class org/jetbrains/dokka/utilities/ParallelCollectionOperationsKt { public static final fun parallelForEach (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static final fun parallelMap (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; diff --git a/core/src/main/kotlin/utilities/DokkaLogging.kt b/core/src/main/kotlin/utilities/DokkaLogging.kt index 6b8ed5d2..0302b8a2 100644 --- a/core/src/main/kotlin/utilities/DokkaLogging.kt +++ b/core/src/main/kotlin/utilities/DokkaLogging.kt @@ -11,28 +11,63 @@ interface DokkaLogger { } fun DokkaLogger.report() { - if (DokkaConsoleLogger.warningsCount > 0 || DokkaConsoleLogger.errorsCount > 0) { - info("Generation completed with ${DokkaConsoleLogger.warningsCount} warning" + - (if(DokkaConsoleLogger.warningsCount == 1) "" else "s") + - " and ${DokkaConsoleLogger.errorsCount} error" + - if(DokkaConsoleLogger.errorsCount == 1) "" else "s" + if (warningsCount > 0 || errorsCount > 0) { + info( + "Generation completed with $warningsCount warning" + + (if (warningsCount == 1) "" else "s") + + " and $errorsCount error" + + if (errorsCount == 1) "" else "s" ) } else { - info("generation completed successfully") + info("Generation completed successfully") } } -object DokkaConsoleLogger : DokkaLogger { +enum class LoggingLevel(val index: Int) { + DEBUG(0), PROGRESS(1), INFO(2), WARN(3), ERROR(4); +} + +/** + * Used to decouple the transport layer from logger and make it convenient for testing + */ +fun interface MessageEmitter : (String) -> Unit { + companion object { + val consoleEmitter: MessageEmitter = MessageEmitter { message -> println(message) } + } +} + +class DokkaConsoleLogger( + val minLevel: LoggingLevel = LoggingLevel.DEBUG, + private val emitter: MessageEmitter = MessageEmitter.consoleEmitter +) : DokkaLogger { override var warningsCount: Int = 0 override var errorsCount: Int = 0 - override fun debug(message: String)= println(message) + override fun debug(message: String) { + if (shouldBeDisplayed(LoggingLevel.DEBUG)) emitter(message) + } - override fun progress(message: String) = println("PROGRESS: $message") + override fun progress(message: String) { + if (shouldBeDisplayed(LoggingLevel.PROGRESS)) emitter("PROGRESS: $message") + } - override fun info(message: String) = println(message) + override fun info(message: String) { + if (shouldBeDisplayed(LoggingLevel.INFO)) emitter(message) + } - override fun warn(message: String) = println("WARN: $message").also { warningsCount++ } + override fun warn(message: String) { + if (shouldBeDisplayed(LoggingLevel.WARN)) { + emitter("WARN: $message") + } + warningsCount++ + } + + override fun error(message: String) { + if (shouldBeDisplayed(LoggingLevel.ERROR)) { + emitter("ERROR: $message") + } + errorsCount++ + } - override fun error(message: String) = println("ERROR: $message").also { errorsCount++ } + private fun shouldBeDisplayed(messageLevel: LoggingLevel): Boolean = messageLevel.index >= minLevel.index } diff --git a/core/test-api/api/test-api.api b/core/test-api/api/test-api.api index f5f3a7ea..ef0f69a5 100644 --- a/core/test-api/api/test-api.api +++ b/core/test-api/api/test-api.api @@ -10,29 +10,6 @@ public final class org/jetbrains/dokka/testApi/context/MockContext : org/jetbrai public fun single (Lorg/jetbrains/dokka/plugability/ExtensionPoint;)Ljava/lang/Object; } -public final class org/jetbrains/dokka/testApi/logger/FilteringLogger : org/jetbrains/dokka/utilities/DokkaLogger { - public fun <init> (Lorg/jetbrains/dokka/testApi/logger/FilteringLogger$Level;Lorg/jetbrains/dokka/utilities/DokkaLogger;)V - public fun debug (Ljava/lang/String;)V - public fun error (Ljava/lang/String;)V - public fun getErrorsCount ()I - public fun getWarningsCount ()I - public fun info (Ljava/lang/String;)V - public fun progress (Ljava/lang/String;)V - public fun setErrorsCount (I)V - public fun setWarningsCount (I)V - public fun warn (Ljava/lang/String;)V -} - -public final class org/jetbrains/dokka/testApi/logger/FilteringLogger$Level : java/lang/Enum { - public static final field Debug Lorg/jetbrains/dokka/testApi/logger/FilteringLogger$Level; - public static final field Error Lorg/jetbrains/dokka/testApi/logger/FilteringLogger$Level; - public static final field Info Lorg/jetbrains/dokka/testApi/logger/FilteringLogger$Level; - public static final field Progress Lorg/jetbrains/dokka/testApi/logger/FilteringLogger$Level; - public static final field Warn Lorg/jetbrains/dokka/testApi/logger/FilteringLogger$Level; - public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/dokka/testApi/logger/FilteringLogger$Level; - public static fun values ()[Lorg/jetbrains/dokka/testApi/logger/FilteringLogger$Level; -} - public final class org/jetbrains/dokka/testApi/logger/TestLogger : org/jetbrains/dokka/utilities/DokkaLogger { public fun <init> (Lorg/jetbrains/dokka/utilities/DokkaLogger;)V public fun debug (Ljava/lang/String;)V diff --git a/core/test-api/src/main/kotlin/testApi/context/MockContext.kt b/core/test-api/src/main/kotlin/testApi/context/MockContext.kt index 97347695..7b17a8ee 100644 --- a/core/test-api/src/main/kotlin/testApi/context/MockContext.kt +++ b/core/test-api/src/main/kotlin/testApi/context/MockContext.kt @@ -5,6 +5,7 @@ import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.DokkaPlugin import org.jetbrains.dokka.plugability.ExtensionPoint import org.jetbrains.dokka.utilities.DokkaConsoleLogger +import org.jetbrains.dokka.utilities.LoggingLevel import kotlin.reflect.KClass import kotlin.reflect.KMutableProperty import kotlin.reflect.full.memberProperties @@ -31,7 +32,7 @@ class MockContext( override fun <T : Any, E : ExtensionPoint<T>> single(point: E): T = get(point).single() - override val logger = DokkaConsoleLogger + override val logger = DokkaConsoleLogger(LoggingLevel.DEBUG) override val configuration: DokkaConfiguration get() = testConfiguration ?: throw IllegalStateException("This mock context doesn't provide configuration") diff --git a/core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt b/core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt index 4f81f098..0bc66a2b 100644 --- a/core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt +++ b/core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt @@ -46,34 +46,3 @@ class TestLogger(private val logger: DokkaLogger) : DokkaLogger { logger.error(message) } } - -class FilteringLogger( - private val minLevel: Level, - private val downstream: DokkaLogger -) : DokkaLogger { - enum class Level { Debug, Info, Progress, Warn, Error } - - override var warningsCount: Int by downstream::warningsCount - - override var errorsCount by downstream::errorsCount - - override fun debug(message: String) { - if (minLevel <= Level.Debug) downstream.debug(message) - } - - override fun info(message: String) { - if (minLevel <= Level.Info) downstream.info(message) - } - - override fun progress(message: String) { - if (minLevel <= Level.Progress) downstream.progress(message) - } - - override fun warn(message: String) { - if (minLevel <= Level.Warn) downstream.warn(message) - } - - override fun error(message: String) { - if (minLevel <= Level.Error) downstream.error(message) - } -} |