diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b66f6f..5d5f3ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 1.24.1 + +- `execute-generators`: return generation failed status in case of any reported errors during the generation, +independent of the generation result, which might still be successful (consistent with the generator behavior in MPS +generated Ant scripts). + ## 1.24.0 - `modelcheck`: Include the model stereotype when matching (`--model` and `--exclude-model` parameters) and in the JUnit diff --git a/execute-generators/src/main/kotlin/de/itemis/mps/gradle/generate/Helper.kt b/execute-generators/src/main/kotlin/de/itemis/mps/gradle/generate/Helper.kt index 1c473fc..d1533c0 100644 --- a/execute-generators/src/main/kotlin/de/itemis/mps/gradle/generate/Helper.kt +++ b/execute-generators/src/main/kotlin/de/itemis/mps/gradle/generate/Helper.kt @@ -48,11 +48,15 @@ val logger = logging.getLogger("de.itemis.mps.gradle.generate") private class MsgHandler : IMessageHandler { val logger = logging.getLogger("de.itemis.mps.gradle.generate.messages") + val errors = mutableListOf() override fun handle(msg: IMessage) { when (msg.kind) { MessageKind.INFORMATION -> logger.info(msg.text, msg.exception) MessageKind.WARNING -> logger.warn(msg.text, msg.exception) - MessageKind.ERROR -> logger.error(msg.text, msg.exception) + MessageKind.ERROR -> { + errors.add(msg) + logger.error(msg.text, msg.exception) + } null -> logger.error(msg.text, msg.exception) } } @@ -168,7 +172,8 @@ private fun getFacetsForLanguagesMps20213(facetRegistry: FacetRegistry, allUsedL facetRegistry.javaClass.getMethod("getFacetsForLanguages", java.lang.Iterable::class.java).invoke(facetRegistry, allUsedLanguages) as Iterable private fun makeModels(proj: Project, models: List): GenerationResult { - val session = MakeSession(proj, MsgHandler(), true) + val msgHandler = MsgHandler() + val session = MakeSession(proj, msgHandler, true) val res = ModelsToResources(models).resources().toList() val makeService = BuildMakeService() @@ -181,13 +186,20 @@ private fun makeModels(proj: Project, models: List): GenerationResult { try { val result = future.get() logger.info("generation finished") - return if (result.isSucessful) { - logger.info("generation result: successful") - GenerationResult.Success - } else { - logger.error("generation result: failed") - logger.error(result) - GenerationResult.Error + return when { + result.isSucessful && msgHandler.errors.isEmpty() -> { + logger.info("generation result: successful") + GenerationResult.Success + } + result.isSucessful && msgHandler.errors.isNotEmpty() -> { + logger.error("generation result: successful, but errors were reported") + GenerationResult.Error + } + else -> { + logger.error("generation result: failed") + logger.error(result) + GenerationResult.Error + } } } catch (ex: Exception) { logger.error("failed to generate", ex) diff --git a/gradle.properties b/gradle.properties index 483af82..9f6c02a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ org.gradle.parallel=true -version.backend=1.24.0 +version.backend=1.24.1 version.project-loader=3.0.2 # A comma-separated list of MPS releases or prereleases to test against.