From e51664edeab2c06b64c15620b1d8219208391fb6 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 10 Apr 2016 20:49:38 -0700 Subject: [PATCH] Add and -repo to settings. --- .../src/main/kotlin/com/beust/kobalt/api/Kobalt.kt | 9 +++++++++ .../com/beust/kobalt/internal/KobaltSettingsXml.kt | 9 +++++++++ .../com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt | 11 ++++++----- .../com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt | 5 +++-- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Kobalt.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Kobalt.kt index 98b2126a..0018b7a2 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Kobalt.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Kobalt.kt @@ -22,16 +22,25 @@ class Kobalt { val repos : Set get() { val settingsRepos = Kobalt.context?.settings?.defaultRepos ?: emptyList() + // Repos from in the settings val result = ArrayList( (if (settingsRepos.isEmpty()) Constants.DEFAULT_REPOS else settingsRepos) .map { HostConfig(it) }) + // Repo from in the settings + Kobalt.context?.settings?.kobaltCompilerRepo?.let { + result.add(HostConfig(it)) + } + + // Repos from the repo contributors Kobalt.context?.pluginInfo?.repoContributors?.forEach { result.addAll(it.reposFor(null)) } + // Repos from the build file result.addAll(reposFromBuildFiles) + return result.toHashSet() } 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 f83421b9..a611473a 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 @@ -21,6 +21,12 @@ class KobaltSettingsXml { @XmlElement(name = "default-repos") @JvmField var defaultRepos: DefaultReposXml? = null + + @XmlElement(name = "kobalt-compiler-version") @JvmField + var kobaltCompilerVersion: String = "1.0.0" + + @XmlElement(name = "kobalt-compiler-repo") @JvmField + var kobaltCompilerRepo: String? = null } class DefaultReposXml { @@ -40,6 +46,9 @@ class KobaltSettings @Inject constructor(val xmlFile: KobaltSettingsXml) { val defaultRepos = xmlFile.defaultRepos?.repo + var kobaltCompilerVersion = xmlFile.kobaltCompilerVersion + var kobaltCompilerRepo = xmlFile.kobaltCompilerRepo + 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 76556fbb..3eb13c37 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt @@ -4,6 +4,7 @@ import com.beust.kobalt.TaskResult import com.beust.kobalt.api.* import com.beust.kobalt.internal.ICompilerAction import com.beust.kobalt.internal.JvmCompiler +import com.beust.kobalt.internal.KobaltSettings import com.beust.kobalt.kotlin.ParentLastClassLoader import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.dependency.FileDependency @@ -32,14 +33,13 @@ class KotlinCompiler @Inject constructor( val files: KFiles, val dependencyManager: DependencyManager, val executors: KobaltExecutors, + val settings: KobaltSettings, val jvmCompiler: JvmCompiler) { - companion object { - val KOTLIN_VERSION = "1.0.0" - } val compilerAction = object: ICompilerAction { override fun compile(projectName: String?, info: CompilerActionInfo): TaskResult { - log(1, " Kotlin compiling " + Strings.pluralizeAll("file", info.sourceFiles.size)) + val version = settings.kobaltCompilerVersion + log(1, " Kotlin $version compiling " + Strings.pluralizeAll("file", info.sourceFiles.size)) val cp = compilerFirst(info.dependencies.map {it.jarFile.get()}) val infoDir = info.directory val outputDir = if (infoDir != null) { @@ -134,7 +134,8 @@ class KotlinCompiler @Inject constructor( otherClasspath: List, sourceFiles: List, outputDir: File, args: List) : TaskResult { val executor = executors.newExecutor("KotlinCompiler", 10) - val compilerDep = dependencyManager.create("org.jetbrains.kotlin:kotlin-compiler-embeddable:$KOTLIN_VERSION") + val compilerVersion = settings.kobaltCompilerVersion + val compilerDep = dependencyManager.create("org.jetbrains.kotlin:kotlin-compiler-embeddable:$compilerVersion") val deps = dependencyManager.transitiveClosure(listOf(compilerDep)) // Force a download of the compiler dependencies diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt index ab03ca1f..4a8fa76f 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt @@ -6,6 +6,7 @@ import com.beust.kobalt.api.* import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.internal.BaseJvmPlugin import com.beust.kobalt.internal.JvmCompilerPlugin +import com.beust.kobalt.internal.KobaltSettings import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.dependency.FileDependency import com.beust.kobalt.misc.KFiles @@ -18,7 +19,7 @@ import javax.inject.Singleton @Singleton class KotlinPlugin @Inject constructor(val executors: KobaltExecutors, val dependencyManager: DependencyManager, - override val configActor: ConfigActor) + val settings: KobaltSettings, override val configActor: ConfigActor) : BaseJvmPlugin(configActor), IDocContributor, IClasspathContributor, ICompilerContributor, IBuildConfigContributor { companion object { @@ -93,7 +94,7 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors, val depen } private fun getKotlinCompilerJar(name: String): String { - val id = "org.jetbrains.kotlin:$name:${KotlinCompiler.KOTLIN_VERSION}" + val id = "org.jetbrains.kotlin:$name:${settings.kobaltCompilerVersion}" val dep = dependencyManager.create(id) val result = dep.jarFile.get().absolutePath return result