From 3592243bd8acd38201f1ecd649c7e5beb4ed9bb4 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 15 Dec 2015 03:35:13 +0400 Subject: [PATCH] Move Kotlin compiler outside of plugin. --- src/main/kotlin/com/beust/kobalt/Variant.kt | 16 ------- .../kotlin/com/beust/kobalt/api/Project.kt | 11 ++--- .../internal/build/BuildFileCompiler.kt | 2 +- .../kobalt/internal/build/ParsedBuildFile.kt | 2 +- .../{plugin => }/kotlin/KotlinCompiler.kt | 42 +++++++++---------- .../kobalt/plugin/kotlin/KotlinPlugin.kt | 2 + 6 files changed, 29 insertions(+), 46 deletions(-) rename src/main/kotlin/com/beust/kobalt/{plugin => }/kotlin/KotlinCompiler.kt (81%) diff --git a/src/main/kotlin/com/beust/kobalt/Variant.kt b/src/main/kotlin/com/beust/kobalt/Variant.kt index 54f93862..83c04625 100644 --- a/src/main/kotlin/com/beust/kobalt/Variant.kt +++ b/src/main/kotlin/com/beust/kobalt/Variant.kt @@ -3,8 +3,6 @@ package com.beust.kobalt import com.beust.kobalt.api.* import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.log -import com.beust.kobalt.plugin.android.AndroidConfig -import com.beust.kobalt.plugin.android.AndroidPlugin import java.io.File /** @@ -123,18 +121,6 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, return result } - fun applicationId(androidConfig: AndroidConfig?): String? { - val mainId = productFlavor.applicationId ?: androidConfig?.applicationId - val result = - if (mainId != null) { - mainId + (buildType.applicationIdSuffix ?: "") - } else { - null - } - - return result - } - /** * Generate BuildConfig.java if requested. Also look up if any BuildConfig is defined on the current build type, * product flavor or main project, and use them to generate any additional field (in that order to @@ -144,8 +130,6 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, val buildConfigs = findBuildConfigs(project, this) if (buildConfigs.size > 0) { - val androidConfig = (Kobalt.findPlugin(AndroidPlugin.PLUGIN_NAME) as AndroidPlugin) - .configurationFor(project) val pkg = project.packageName ?: project.group ?: throw KobaltException( "packageName needs to be defined on the project in order to generate BuildConfig") diff --git a/src/main/kotlin/com/beust/kobalt/api/Project.kt b/src/main/kotlin/com/beust/kobalt/api/Project.kt index 43996ed3..b5de85d1 100644 --- a/src/main/kotlin/com/beust/kobalt/api/Project.kt +++ b/src/main/kotlin/com/beust/kobalt/api/Project.kt @@ -1,12 +1,9 @@ package com.beust.kobalt.api -import com.beust.kobalt.Plugins import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.internal.IProjectInfo import com.beust.kobalt.maven.dependency.MavenDependency import com.beust.kobalt.misc.KFiles -import com.beust.kobalt.plugin.android.AndroidPlugin -import com.beust.kobalt.plugin.android.Proguard import java.util.* open class Project( @@ -196,10 +193,10 @@ class BuildTypeConfig(val project: Project?, val name: String) : IBuildConfig { var applicationIdSuffix: String? = null var proguardFile: String? = null - fun getDefaultProguardFile(name: String) : String { - val androidPlugin = Plugins.findPlugin(AndroidPlugin.PLUGIN_NAME) as AndroidPlugin - return Proguard(androidPlugin.androidHome(project)).getDefaultProguardFile(name) - } +// fun getDefaultProguardFile(name: String) : String { +// val androidPlugin = Plugins.findPlugin(AndroidPlugin.PLUGIN_NAME) as AndroidPlugin +// return Proguard(androidPlugin.androidHome(project)).getDefaultProguardFile(name) +// } override var buildConfig : BuildConfig? = BuildConfig() } diff --git a/src/main/kotlin/com/beust/kobalt/internal/build/BuildFileCompiler.kt b/src/main/kotlin/com/beust/kobalt/internal/build/BuildFileCompiler.kt index 09eaf904..d6d493d7 100644 --- a/src/main/kotlin/com/beust/kobalt/internal/build/BuildFileCompiler.kt +++ b/src/main/kotlin/com/beust/kobalt/internal/build/BuildFileCompiler.kt @@ -9,11 +9,11 @@ import com.beust.kobalt.api.KobaltContext import com.beust.kobalt.api.PluginProperties import com.beust.kobalt.api.Project import com.beust.kobalt.internal.PluginInfo +import com.beust.kobalt.kotlin.kotlinCompilePrivate import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KobaltExecutors import com.beust.kobalt.misc.log -import com.beust.kobalt.plugin.kotlin.kotlinCompilePrivate import com.google.inject.assistedinject.Assisted import java.io.File import java.net.URL diff --git a/src/main/kotlin/com/beust/kobalt/internal/build/ParsedBuildFile.kt b/src/main/kotlin/com/beust/kobalt/internal/build/ParsedBuildFile.kt index 4182981d..cdb99a20 100644 --- a/src/main/kotlin/com/beust/kobalt/internal/build/ParsedBuildFile.kt +++ b/src/main/kotlin/com/beust/kobalt/internal/build/ParsedBuildFile.kt @@ -7,7 +7,7 @@ import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.countChar import com.beust.kobalt.misc.log -import com.beust.kobalt.plugin.kotlin.kotlinCompilePrivate +import com.beust.kobalt.kotlin.kotlinCompilePrivate import java.io.File import java.net.URL import java.nio.charset.Charset diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt b/src/main/kotlin/com/beust/kobalt/kotlin/KotlinCompiler.kt similarity index 81% rename from src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt rename to src/main/kotlin/com/beust/kobalt/kotlin/KotlinCompiler.kt index ac0f5a8a..9cd359b5 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt +++ b/src/main/kotlin/com/beust/kobalt/kotlin/KotlinCompiler.kt @@ -1,7 +1,8 @@ -package com.beust.kobalt.plugin.kotlin; +package com.beust.kobalt.kotlin import com.beust.kobalt.TaskResult import com.beust.kobalt.api.* +import com.beust.kobalt.app.ParentLastClassLoader import com.beust.kobalt.internal.ICompilerAction import com.beust.kobalt.internal.JvmCompiler import com.beust.kobalt.maven.DepFactory @@ -11,7 +12,6 @@ import com.beust.kobalt.maven.dependency.FileDependency import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KobaltExecutors import com.beust.kobalt.misc.log -import com.beust.kobalt.app.ParentLastClassLoader import org.jetbrains.kotlin.cli.common.CLICompiler import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler @@ -74,21 +74,21 @@ class KotlinCompiler @Inject constructor(val localRepo : LocalRepo, private fun invokeCompiler(cp: List, allArgs: Array): Boolean { log(2, "Calling kotlinc " + allArgs.joinToString(" ")) val result : Boolean = - if (true) { - val classLoader = ParentLastClassLoader(cp.map { it.toURI().toURL() }) - val compiler = classLoader.loadClass("org.jetbrains.kotlin.cli.common.CLICompiler") - val compilerMain = compiler.declaredMethods.filter { - it.name == "doMainNoExit" && it.parameterTypes.size == 2 - }.get(0) - val kCompiler = classLoader.loadClass("org.jetbrains.kotlin.cli.jvm.K2JVMCompiler") - val compilerInstance = kCompiler.newInstance() - val exitCode = compilerMain.invoke(null, compilerInstance, allArgs) - val nameMethod = exitCode.javaClass.getMethod("name") - "OK" == nameMethod.invoke(exitCode).toString() - } else { - val exitCode = CLICompiler.doMainNoExit(K2JVMCompiler(), allArgs) - exitCode == ExitCode.OK - } + if (true) { + val classLoader = ParentLastClassLoader(cp.map { it.toURI().toURL() }) + val compiler = classLoader.loadClass("org.jetbrains.kotlin.cli.common.CLICompiler") + val compilerMain = compiler.declaredMethods.filter { + it.name == "doMainNoExit" && it.parameterTypes.size == 2 + }.get(0) + val kCompiler = classLoader.loadClass("org.jetbrains.kotlin.cli.jvm.K2JVMCompiler") + val compilerInstance = kCompiler.newInstance() + val exitCode = compilerMain.invoke(null, compilerInstance, allArgs) + val nameMethod = exitCode.javaClass.getMethod("name") + "OK" == nameMethod.invoke(exitCode).toString() + } else { + val exitCode = CLICompiler.doMainNoExit(K2JVMCompiler(), allArgs) + exitCode == ExitCode.OK + } return result } @@ -122,10 +122,10 @@ class KotlinCompiler @Inject constructor(val localRepo : LocalRepo, executor.shutdown() -// val classpathList = arrayListOf( -// getKotlinCompilerJar("kotlin-stdlib"), -// getKotlinCompilerJar("kotlin-compiler-embeddable")) -// .map { FileDependency(it) } + // val classpathList = arrayListOf( + // getKotlinCompilerJar("kotlin-stdlib"), + // getKotlinCompilerJar("kotlin-compiler-embeddable")) + // .map { FileDependency(it) } val dependencies = compileDependencies + otherClasspath.map { FileDependency(it) } val info = CompilerActionInfo(project?.directory, dependencies, sourceFiles, outputDir, args) 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 ac017f72..93a51d3a 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,8 @@ import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Task import com.beust.kobalt.internal.JvmCompiler import com.beust.kobalt.internal.JvmCompilerPlugin +import com.beust.kobalt.kotlin.KotlinCompiler +import com.beust.kobalt.kotlin.kotlinCompilePrivate import com.beust.kobalt.maven.DepFactory import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.LocalRepo