From 991887e280ebe8a3f8e61820776b48c2a7526b94 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 14 Jan 2017 10:14:34 -0800 Subject: [PATCH] Add in settings.xml. --- .../beust/kobalt/internal/KobaltSettingsXml.kt | 4 ++++ .../kobalt/plugin/kotlin/KotlinCompiler.kt | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt index ff367ace..3ab38848 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt @@ -34,6 +34,9 @@ class KobaltSettingsXml { @XmlElement(name = "kobaltCompilerRepo") @JvmField var kobaltCompilerRepo: String? = null + + @XmlElement(name = "kobaltCompilerFlags") @JvmField + var kobaltCompilerFlags: String? = null } class ProxiesXml { @@ -97,6 +100,7 @@ class KobaltSettings @Inject constructor(val xmlFile: KobaltSettingsXml) { var kobaltCompilerVersion = xmlFile.kobaltCompilerVersion var kobaltCompilerRepo = xmlFile.kobaltCompilerRepo + var kobaltCompilerFlags = xmlFile.kobaltCompilerFlags companion object { val SETTINGS_FILE_PATH = KFiles.joinDir(KFiles.HOME_KOBALT_DIR.absolutePath, "settings.xml") diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt index c9029f91..0b38d770 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt @@ -85,6 +85,23 @@ class KotlinCompiler @Inject constructor( friendPaths = friends } + /** + * ~/.config/kobalt/settings.xml allows users to specify -Xflags in the + * tag. Map each of these string flags to the boolean + * found in the args class + */ + fun updateArgsWithCompilerFlags(args: K2JVMCompilerArguments, settings: KobaltSettings) { + val flags = settings.kobaltCompilerFlags?.split(" ") + flags?.forEach { + if (it.startsWith("-X")) when(it.substring(2)) { + "skip-metadata-version-check" -> args.skipMetadataVersionCheck = true + else -> warn("Unknown Kotlin compiler flag found in config.xml: $it") + } + } + } + + updateArgsWithCompilerFlags(args, settings) + fun logk(level: Int, message: CharSequence) = kobaltLog.log(projectName ?: "", level, message) logk(2, "Invoking K2JVMCompiler with arguments:"