diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Args.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Args.kt index 0204087b..ee3f0bd0 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Args.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Args.kt @@ -46,6 +46,10 @@ class Args { "(${Constants.LOG_DEFAULT_LEVEL}-${Constants.LOG_MAX_LEVEL})") var log: Int = Constants.LOG_DEFAULT_LEVEL + @Parameter(names = arrayOf("--logTags"), + description = "Comma-separated list of tags to enable logging for") + var logTags: String = "" + @Parameter(names = arrayOf("--forceIncremental"), description = "Force the build to be incremental even if the build file was modified") var forceIncremental: Boolean = false diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/BaseProjectRunner.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/BaseProjectRunner.kt index c93d01b9..4efadc8b 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/BaseProjectRunner.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/BaseProjectRunner.kt @@ -15,7 +15,7 @@ abstract class BaseProjectRunner { : TaskManager.RunTargetResult companion object { - val LOG_LEVEL = TaskManager.LOG_LEVEL + val TAG = "graph" fun runBuildListenersForProject(project: Project, context: KobaltContext, start: Boolean, status: ProjectBuildStatus = ProjectBuildStatus.SUCCESS) { @@ -86,7 +86,7 @@ abstract class BaseProjectRunner { val froms = nodeMap[from] froms.forEach { f: T -> nodeMap[to].forEach { t: T -> - kobaltLog(LOG_LEVEL, " Adding edge ($text) $f -> $t") + kobaltLog(TAG, " Adding edge ($text) $f -> $t") result.addEdge(f, t) newToProcess.add(t) } @@ -97,19 +97,19 @@ abstract class BaseProjectRunner { * Whenever a task is added to the graph, we also add its alwaysRunAfter tasks. */ fun processAlways(always: Multimap, node: T) { - kobaltLog(LOG_LEVEL, " Processing always for $node") + kobaltLog(TAG, " Processing always for $node") always[toName(node)]?.let { to: Collection -> to.forEach { t -> nodeMap[t].forEach { from -> - kobaltLog(LOG_LEVEL, " Adding always edge $from -> $node") + kobaltLog(TAG, " Adding always edge $from -> $node") result.addEdge(from, node) } } - kobaltLog(LOG_LEVEL, " ... done processing always for $node") + kobaltLog(TAG, " ... done processing always for $node") } } - kobaltLog(LOG_LEVEL, " Current batch to process: $toProcess") + kobaltLog(TAG, " Current batch to process: $toProcess") // // Move dependsOn + reverseDependsOn in one multimap called allDepends @@ -131,7 +131,7 @@ abstract class BaseProjectRunner { // toProcess.forEach { taskInfo -> val taskName = taskInfo.taskName - kobaltLog(LOG_LEVEL, " ***** Current node: $taskName") + kobaltLog(TAG, " ***** Current node: $taskName") nodeMap[taskName].forEach { result.addNode(it) processAlways(always, it) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt index 6cb88983..e2d83e58 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt @@ -24,10 +24,6 @@ class TaskManager @Inject constructor(val args: Args, private val runAfter = TreeMultimap.create() private val alwaysRunAfter = TreeMultimap.create() - companion object { - val LOG_LEVEL = 3 - } - /** * Dependency: task2 depends on task 1. */ diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltLogger.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltLogger.kt index 90b07e80..5a439357 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltLogger.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltLogger.kt @@ -1,5 +1,6 @@ package com.beust.kobalt.misc +import com.beust.kobalt.Args import com.beust.kobalt.AsciiArt import com.beust.kobalt.KobaltException import com.beust.kobalt.api.Kobalt @@ -15,6 +16,11 @@ fun Any.log(level: Int, text: CharSequence, newLine : Boolean = true) { fun Any.kobaltLog(level: Int, text: CharSequence, newLine : Boolean = true) = log(level, text, newLine) fun Any.kobaltWarn(text: CharSequence) = warn(text) fun Any.kobaltError(text: CharSequence) = error(text) +fun Any.kobaltLog(tag: String, text: CharSequence, newLine : Boolean = true) { + if (Kobalt.INJECTOR.getInstance(Args::class.java).logTags.split(',').contains(tag)) { + log(1, text, newLine) + } +} fun Any.logWrap(level: Int, text1: CharSequence, text2: CharSequence, function: () -> Unit) { if (level <= KobaltLogger.LOG_LEVEL) {