aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/api/core.api24
-rw-r--r--core/src/main/kotlin/utilities/DokkaLogging.kt59
-rw-r--r--core/test-api/api/test-api.api23
-rw-r--r--core/test-api/src/main/kotlin/testApi/context/MockContext.kt3
-rw-r--r--core/test-api/src/main/kotlin/testApi/logger/TestLogger.kt31
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)
- }
-}