[Gradle, JS] Useful message on exception for webpack

#KT-38286 fixed
This commit is contained in:
Ilya Goncharov
2020-04-14 20:17:59 +03:00
parent f8c44be865
commit fa4003bac5
2 changed files with 16 additions and 5 deletions
@@ -75,13 +75,14 @@ internal fun Project.execWithErrorLogger(description: String, body: (ExecAction)
body(exec)
return project!!.operation(description) {
progress(description)
val client = TeamCityMessageCommonClient(logger, this)
exec.standardOutput = TCServiceMessageOutputStreamHandler(
client = TeamCityMessageCommonClient(logger, this),
client = client,
onException = { },
logger = logger
)
exec.errorOutput = TCServiceMessageOutputStreamHandler(
client = TeamCityMessageCommonClient(logger, this),
client = client,
onException = { },
logger = logger
)
@@ -89,9 +90,7 @@ internal fun Project.execWithErrorLogger(description: String, body: (ExecAction)
val result = exec.execute()
if (result.exitValue != 0) {
error(
"""
Process '$description' returns ${result.exitValue}
""".trimIndent()
client.testFailedMessage()
)
}
result
@@ -10,6 +10,7 @@ import jetbrains.buildServer.messages.serviceMessages.ServiceMessage
import jetbrains.buildServer.messages.serviceMessages.ServiceMessageParserCallback
import org.gradle.api.logging.Logger
import org.gradle.internal.logging.progress.ProgressLogger
import org.jetbrains.kotlin.gradle.utils.clearAnsiColor
import java.text.ParseException
class TeamCityMessageCommonClient(
@@ -17,6 +18,8 @@ class TeamCityMessageCommonClient(
private val progressLogger: ProgressLogger
) : ServiceMessageParserCallback {
private val errors = mutableListOf<String>()
private val stackTraceProcessor = TeamCityMessageStackTraceProcessor()
override fun parseException(e: ParseException, text: String) {
@@ -29,6 +32,11 @@ class TeamCityMessageCommonClient(
}
}
internal fun testFailedMessage(): String {
return errors
.joinToString("\n")
}
private fun printMessage(text: String, type: String?) {
val value = text.trimEnd()
progressLogger.progress(value)
@@ -41,6 +49,10 @@ class TeamCityMessageCommonClient(
}
}
when (actualType) {
ERROR, WARN -> errors.add(value.clearAnsiColor())
}
actualType?.let { log.processLogMessage(value, it) }
}