1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

Move Kotlin compiler outside of plugin.

This commit is contained in:
Cedric Beust 2015-12-15 03:35:13 +04:00
parent 259d4a3cba
commit 3592243bd8
6 changed files with 29 additions and 46 deletions

View file

@ -3,8 +3,6 @@ package com.beust.kobalt
import com.beust.kobalt.api.* import com.beust.kobalt.api.*
import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.log import com.beust.kobalt.misc.log
import com.beust.kobalt.plugin.android.AndroidConfig
import com.beust.kobalt.plugin.android.AndroidPlugin
import java.io.File import java.io.File
/** /**
@ -123,18 +121,6 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null,
return result 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, * 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 * 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) val buildConfigs = findBuildConfigs(project, this)
if (buildConfigs.size > 0) { if (buildConfigs.size > 0) {
val androidConfig = (Kobalt.findPlugin(AndroidPlugin.PLUGIN_NAME) as AndroidPlugin)
.configurationFor(project)
val pkg = project.packageName ?: project.group val pkg = project.packageName ?: project.group
?: throw KobaltException( ?: throw KobaltException(
"packageName needs to be defined on the project in order to generate BuildConfig") "packageName needs to be defined on the project in order to generate BuildConfig")

View file

@ -1,12 +1,9 @@
package com.beust.kobalt.api package com.beust.kobalt.api
import com.beust.kobalt.Plugins
import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Directive
import com.beust.kobalt.internal.IProjectInfo import com.beust.kobalt.internal.IProjectInfo
import com.beust.kobalt.maven.dependency.MavenDependency import com.beust.kobalt.maven.dependency.MavenDependency
import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.plugin.android.AndroidPlugin
import com.beust.kobalt.plugin.android.Proguard
import java.util.* import java.util.*
open class Project( open class Project(
@ -196,10 +193,10 @@ class BuildTypeConfig(val project: Project?, val name: String) : IBuildConfig {
var applicationIdSuffix: String? = null var applicationIdSuffix: String? = null
var proguardFile: String? = null var proguardFile: String? = null
fun getDefaultProguardFile(name: String) : String { // fun getDefaultProguardFile(name: String) : String {
val androidPlugin = Plugins.findPlugin(AndroidPlugin.PLUGIN_NAME) as AndroidPlugin // val androidPlugin = Plugins.findPlugin(AndroidPlugin.PLUGIN_NAME) as AndroidPlugin
return Proguard(androidPlugin.androidHome(project)).getDefaultProguardFile(name) // return Proguard(androidPlugin.androidHome(project)).getDefaultProguardFile(name)
} // }
override var buildConfig : BuildConfig? = BuildConfig() override var buildConfig : BuildConfig? = BuildConfig()
} }

View file

@ -9,11 +9,11 @@ import com.beust.kobalt.api.KobaltContext
import com.beust.kobalt.api.PluginProperties import com.beust.kobalt.api.PluginProperties
import com.beust.kobalt.api.Project import com.beust.kobalt.api.Project
import com.beust.kobalt.internal.PluginInfo import com.beust.kobalt.internal.PluginInfo
import com.beust.kobalt.kotlin.kotlinCompilePrivate
import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.DependencyManager
import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.KobaltExecutors import com.beust.kobalt.misc.KobaltExecutors
import com.beust.kobalt.misc.log import com.beust.kobalt.misc.log
import com.beust.kobalt.plugin.kotlin.kotlinCompilePrivate
import com.google.inject.assistedinject.Assisted import com.google.inject.assistedinject.Assisted
import java.io.File import java.io.File
import java.net.URL import java.net.URL

View file

@ -7,7 +7,7 @@ import com.beust.kobalt.maven.DependencyManager
import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.countChar import com.beust.kobalt.misc.countChar
import com.beust.kobalt.misc.log 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.io.File
import java.net.URL import java.net.URL
import java.nio.charset.Charset import java.nio.charset.Charset

View file

@ -1,7 +1,8 @@
package com.beust.kobalt.plugin.kotlin; package com.beust.kobalt.kotlin
import com.beust.kobalt.TaskResult import com.beust.kobalt.TaskResult
import com.beust.kobalt.api.* import com.beust.kobalt.api.*
import com.beust.kobalt.app.ParentLastClassLoader
import com.beust.kobalt.internal.ICompilerAction import com.beust.kobalt.internal.ICompilerAction
import com.beust.kobalt.internal.JvmCompiler import com.beust.kobalt.internal.JvmCompiler
import com.beust.kobalt.maven.DepFactory 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.KFiles
import com.beust.kobalt.misc.KobaltExecutors import com.beust.kobalt.misc.KobaltExecutors
import com.beust.kobalt.misc.log 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.CLICompiler
import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.ExitCode
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
@ -74,21 +74,21 @@ class KotlinCompiler @Inject constructor(val localRepo : LocalRepo,
private fun invokeCompiler(cp: List<File>, allArgs: Array<String>): Boolean { private fun invokeCompiler(cp: List<File>, allArgs: Array<String>): Boolean {
log(2, "Calling kotlinc " + allArgs.joinToString(" ")) log(2, "Calling kotlinc " + allArgs.joinToString(" "))
val result : Boolean = val result : Boolean =
if (true) { if (true) {
val classLoader = ParentLastClassLoader(cp.map { it.toURI().toURL() }) val classLoader = ParentLastClassLoader(cp.map { it.toURI().toURL() })
val compiler = classLoader.loadClass("org.jetbrains.kotlin.cli.common.CLICompiler") val compiler = classLoader.loadClass("org.jetbrains.kotlin.cli.common.CLICompiler")
val compilerMain = compiler.declaredMethods.filter { val compilerMain = compiler.declaredMethods.filter {
it.name == "doMainNoExit" && it.parameterTypes.size == 2 it.name == "doMainNoExit" && it.parameterTypes.size == 2
}.get(0) }.get(0)
val kCompiler = classLoader.loadClass("org.jetbrains.kotlin.cli.jvm.K2JVMCompiler") val kCompiler = classLoader.loadClass("org.jetbrains.kotlin.cli.jvm.K2JVMCompiler")
val compilerInstance = kCompiler.newInstance() val compilerInstance = kCompiler.newInstance()
val exitCode = compilerMain.invoke(null, compilerInstance, allArgs) val exitCode = compilerMain.invoke(null, compilerInstance, allArgs)
val nameMethod = exitCode.javaClass.getMethod("name") val nameMethod = exitCode.javaClass.getMethod("name")
"OK" == nameMethod.invoke(exitCode).toString() "OK" == nameMethod.invoke(exitCode).toString()
} else { } else {
val exitCode = CLICompiler.doMainNoExit(K2JVMCompiler(), allArgs) val exitCode = CLICompiler.doMainNoExit(K2JVMCompiler(), allArgs)
exitCode == ExitCode.OK exitCode == ExitCode.OK
} }
return result return result
} }
@ -122,10 +122,10 @@ class KotlinCompiler @Inject constructor(val localRepo : LocalRepo,
executor.shutdown() executor.shutdown()
// val classpathList = arrayListOf( // val classpathList = arrayListOf(
// getKotlinCompilerJar("kotlin-stdlib"), // getKotlinCompilerJar("kotlin-stdlib"),
// getKotlinCompilerJar("kotlin-compiler-embeddable")) // getKotlinCompilerJar("kotlin-compiler-embeddable"))
// .map { FileDependency(it) } // .map { FileDependency(it) }
val dependencies = compileDependencies + otherClasspath.map { FileDependency(it) } val dependencies = compileDependencies + otherClasspath.map { FileDependency(it) }
val info = CompilerActionInfo(project?.directory, dependencies, sourceFiles, outputDir, args) val info = CompilerActionInfo(project?.directory, dependencies, sourceFiles, outputDir, args)

View file

@ -6,6 +6,8 @@ import com.beust.kobalt.api.annotation.Directive
import com.beust.kobalt.api.annotation.Task import com.beust.kobalt.api.annotation.Task
import com.beust.kobalt.internal.JvmCompiler import com.beust.kobalt.internal.JvmCompiler
import com.beust.kobalt.internal.JvmCompilerPlugin 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.DepFactory
import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.DependencyManager
import com.beust.kobalt.maven.LocalRepo import com.beust.kobalt.maven.LocalRepo