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

More plug-ins under ConfigPlugin.

This commit is contained in:
Cedric Beust 2015-11-15 18:45:27 -08:00
parent c8cdaeda27
commit 802325c16a
4 changed files with 21 additions and 42 deletions

View file

@ -1,12 +1,12 @@
package com.beust.kobalt.plugin.android package com.beust.kobalt.plugin.android
import com.beust.kobalt.OperatingSystem import com.beust.kobalt.OperatingSystem
import com.beust.kobalt.TaskResult
import com.beust.kobalt.api.* import com.beust.kobalt.api.*
import com.beust.kobalt.api.annotation.Directive 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.homeDir import com.beust.kobalt.homeDir
import com.beust.kobalt.internal.JvmCompilerPlugin import com.beust.kobalt.internal.JvmCompilerPlugin
import com.beust.kobalt.TaskResult
import com.beust.kobalt.maven.FileDependency import com.beust.kobalt.maven.FileDependency
import com.beust.kobalt.maven.IClasspathDependency import com.beust.kobalt.maven.IClasspathDependency
import com.beust.kobalt.maven.MavenId import com.beust.kobalt.maven.MavenId
@ -32,7 +32,7 @@ class AndroidConfig(var compileSdkVersion : String = "23",
fun Project.android(init: AndroidConfig.() -> Unit) : AndroidConfig { fun Project.android(init: AndroidConfig.() -> Unit) : AndroidConfig {
val pd = AndroidConfig() val pd = AndroidConfig()
pd.init() pd.init()
(Kobalt.findPlugin("android") as AndroidPlugin).setConfiguration(this, pd) (Kobalt.findPlugin("android") as AndroidPlugin).addConfiguration(this, pd)
return pd return pd
} }
@ -41,10 +41,10 @@ val Project.isAndroid : Boolean
@Singleton @Singleton
public class AndroidPlugin @Inject constructor(val javaCompiler: JavaCompiler) public class AndroidPlugin @Inject constructor(val javaCompiler: JavaCompiler)
: BasePlugin(), IClasspathContributor, IRepoContributor { : ConfigPlugin<AndroidConfig>(), IClasspathContributor, IRepoContributor {
override val name = "android" override val name = "android"
fun isAndroid(project: Project) = configurations[project.name] != null fun isAndroid(project: Project) = configurationFor(project) != null
override fun apply(project: Project, context: KobaltContext) { override fun apply(project: Project, context: KobaltContext) {
super.apply(project, context) super.apply(project, context)
@ -58,19 +58,15 @@ public class AndroidPlugin @Inject constructor(val javaCompiler: JavaCompiler)
(Kobalt.findPlugin("java") as JvmCompilerPlugin).addCompilerArgs("-target", "1.6", "-source", "1.6") (Kobalt.findPlugin("java") as JvmCompilerPlugin).addCompilerArgs("-target", "1.6", "-source", "1.6")
} }
val configurations = hashMapOf<String, AndroidConfig>()
fun setConfiguration(p: Project, config: AndroidConfig) { override fun accept(project: Project) = isAndroid(project)
configurations.put(p.name, config)
}
override fun accept(project: Project) = configurations.containsKey(project.name)
val flavor = "debug" val flavor = "debug"
fun compileSdkVersion(project: Project) = configurations[project.name]?.compileSdkVersion fun compileSdkVersion(project: Project) = configurationFor(project)?.compileSdkVersion
fun buildToolsVersion(project: Project): String { fun buildToolsVersion(project: Project): String {
val version = configurations[project.name]?.buildToolsVersion val version = configurationFor(project)?.buildToolsVersion
if (OperatingSystem.current().isWindows() && version == "21.1.2") if (OperatingSystem.current().isWindows() && version == "21.1.2")
return "build-tools-$version" return "build-tools-$version"
else else
@ -80,7 +76,7 @@ public class AndroidPlugin @Inject constructor(val javaCompiler: JavaCompiler)
fun androidHomeNoThrows(project: Project?): String? { fun androidHomeNoThrows(project: Project?): String? {
var result = System.getenv("ANDROID_HOME") var result = System.getenv("ANDROID_HOME")
if (project != null) { if (project != null) {
configurations[project.name]?.androidHome?.let { configurationFor(project)?.androidHome?.let {
result = it result = it
} }
} }
@ -135,7 +131,7 @@ public class AndroidPlugin @Inject constructor(val javaCompiler: JavaCompiler)
private fun generateR(project: Project, generated: Path, aapt: String, resDir: String) { private fun generateR(project: Project, generated: Path, aapt: String, resDir: String) {
val compileSdkVersion = compileSdkVersion(project) val compileSdkVersion = compileSdkVersion(project)
val androidJar = Paths.get(androidHome(project), "platforms", "android-$compileSdkVersion", "android.jar") val androidJar = Paths.get(androidHome(project), "platforms", "android-$compileSdkVersion", "android.jar")
val applicationId = configurations[project.name]?.applicationId!! val applicationId = configurationFor(project)?.applicationId!!
val manifestDir = Paths.get(project.directory, "app", "src", "main").toString() val manifestDir = Paths.get(project.directory, "app", "src", "main").toString()
val manifest = Paths.get(manifestDir, "AndroidManifest.xml") val manifest = Paths.get(manifestDir, "AndroidManifest.xml")

View file

@ -1,7 +1,7 @@
package com.beust.kobalt.plugin.application package com.beust.kobalt.plugin.application
import com.beust.kobalt.* import com.beust.kobalt.*
import com.beust.kobalt.api.BasePlugin import com.beust.kobalt.api.ConfigPlugin
import com.beust.kobalt.api.Project import com.beust.kobalt.api.Project
import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Directive
import com.beust.kobalt.api.annotation.Task import com.beust.kobalt.api.annotation.Task
@ -26,13 +26,13 @@ class ApplicationConfig {
fun Project.application(init: ApplicationConfig.() -> Unit) { fun Project.application(init: ApplicationConfig.() -> Unit) {
ApplicationConfig().let { config -> ApplicationConfig().let { config ->
config.init() config.init()
(Plugins.findPlugin(ApplicationPlugin.NAME) as ApplicationPlugin).addConfig(this, config) (Plugins.findPlugin(ApplicationPlugin.NAME) as ApplicationPlugin).addConfiguration(this, config)
} }
} }
@Singleton @Singleton
class ApplicationPlugin @Inject constructor(val executors: KobaltExecutors, class ApplicationPlugin @Inject constructor(val executors: KobaltExecutors,
val dependencyManager: DependencyManager) : BasePlugin() { val dependencyManager: DependencyManager) : ConfigPlugin<ApplicationConfig>() {
companion object { companion object {
const val NAME = "application" const val NAME = "application"
@ -40,15 +40,9 @@ class ApplicationPlugin @Inject constructor(val executors: KobaltExecutors,
override val name = NAME override val name = NAME
val configs = hashMapOf<String, ApplicationConfig>()
fun addConfig(project: Project, config: ApplicationConfig) {
configs.put(project.name, config)
}
@Task(name = "run", description = "Run the main class", runAfter = arrayOf("assemble")) @Task(name = "run", description = "Run the main class", runAfter = arrayOf("assemble"))
fun taskRun(project: Project): TaskResult { fun taskRun(project: Project): TaskResult {
configs[project.name]?.let { config -> configurationFor(project)?.let { config ->
val java = JavaInfo.create(File(SystemProperties.javaBase)).javaExecutable!! val java = JavaInfo.create(File(SystemProperties.javaBase)).javaExecutable!!
if (config.mainClass != null) { if (config.mainClass != null) {
val jarName = project.projectProperties.get(PackagingPlugin.JAR_NAME) as String val jarName = project.projectProperties.get(PackagingPlugin.JAR_NAME) as String

View file

@ -18,7 +18,7 @@ import javax.inject.Singleton
*/ */
@Singleton @Singleton
public class AptPlugin @Inject constructor(val depFactory: DepFactory, val executors: KobaltExecutors) public class AptPlugin @Inject constructor(val depFactory: DepFactory, val executors: KobaltExecutors)
: BasePlugin(), ICompilerFlagContributor { : ConfigPlugin<AptConfig>(), ICompilerFlagContributor {
companion object { companion object {
const val TASK_APT: String = "runApt" const val TASK_APT: String = "runApt"
const val NAME = "apt" const val NAME = "apt"
@ -26,16 +26,10 @@ public class AptPlugin @Inject constructor(val depFactory: DepFactory, val execu
override val name = NAME override val name = NAME
private val configs = hashMapOf<String, AptConfig>()
fun addAptConfig(project: Project, config: AptConfig) {
configs.put(project.name, config)
}
// ICompilerFlagContributor // ICompilerFlagContributor
override fun flagsFor(project: Project) : List<String> { override fun flagsFor(project: Project) : List<String> {
val result = arrayListOf<String>() val result = arrayListOf<String>()
configs[project.name]?.let { config -> configurationFor(project)?.let { config ->
aptDependencies.get(key = project.name)?.let { aptDependency -> aptDependencies.get(key = project.name)?.let { aptDependency ->
val dependencyJarFile = JarFinder.byId(aptDependency) val dependencyJarFile = JarFinder.byId(aptDependency)
result.add("-processorpath") result.add("-processorpath")
@ -61,7 +55,7 @@ class AptConfig(var outputDir: String = "generated/sources/apt")
public fun Project.apt(init: AptConfig.() -> Unit) { public fun Project.apt(init: AptConfig.() -> Unit) {
AptConfig().let { AptConfig().let {
it.init() it.init()
(Kobalt.findPlugin(AptPlugin.NAME) as AptPlugin).addAptConfig(this, it) (Kobalt.findPlugin(AptPlugin.NAME) as AptPlugin).addConfiguration(this, it)
} }
} }

View file

@ -4,7 +4,7 @@ import com.beust.kobalt.IFileSpec
import com.beust.kobalt.IFileSpec.FileSpec import com.beust.kobalt.IFileSpec.FileSpec
import com.beust.kobalt.IFileSpec.Glob import com.beust.kobalt.IFileSpec.Glob
import com.beust.kobalt.TaskResult import com.beust.kobalt.TaskResult
import com.beust.kobalt.api.BasePlugin import com.beust.kobalt.api.ConfigPlugin
import com.beust.kobalt.api.Kobalt import com.beust.kobalt.api.Kobalt
import com.beust.kobalt.api.KobaltContext import com.beust.kobalt.api.KobaltContext
import com.beust.kobalt.api.Project import com.beust.kobalt.api.Project
@ -34,7 +34,7 @@ import javax.inject.Singleton
@Singleton @Singleton
class PackagingPlugin @Inject constructor(val dependencyManager : DependencyManager, class PackagingPlugin @Inject constructor(val dependencyManager : DependencyManager,
val executors: KobaltExecutors, val localRepo: LocalRepo) : BasePlugin() { val executors: KobaltExecutors, val localRepo: LocalRepo) : ConfigPlugin<InstallConfig>() {
companion object { companion object {
const val PLUGIN_NAME = "packaging" const val PLUGIN_NAME = "packaging"
@ -252,7 +252,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
@Task(name = PackagingPlugin.TASK_INSTALL, description = "Install the artifacts", @Task(name = PackagingPlugin.TASK_INSTALL, description = "Install the artifacts",
runAfter = arrayOf(PackagingPlugin.TASK_ASSEMBLE)) runAfter = arrayOf(PackagingPlugin.TASK_ASSEMBLE))
fun taskInstall(project: Project) : TaskResult { fun taskInstall(project: Project) : TaskResult {
val config = installConfigs[project.name] val config = configurationFor(project)
if (config != null) { if (config != null) {
val buildDir = project.projectProperties.getString(LIBS_DIR) val buildDir = project.projectProperties.getString(LIBS_DIR)
log(1, "Installing from $buildDir to ${config.libDir}") log(1, "Installing from $buildDir to ${config.libDir}")
@ -265,18 +265,13 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
return TaskResult() return TaskResult()
} }
private val installConfigs = hashMapOf<String, InstallConfig>()
fun addInstallConfig(project: Project, config: InstallConfig) =
installConfigs.put(project.name, config)
} }
@Directive @Directive
fun Project.install(init: InstallConfig.() -> Unit) { fun Project.install(init: InstallConfig.() -> Unit) {
InstallConfig().let { InstallConfig().let {
it.init() it.init()
(Kobalt.findPlugin(PackagingPlugin.PLUGIN_NAME) as PackagingPlugin).addInstallConfig(this, it) (Kobalt.findPlugin(PackagingPlugin.PLUGIN_NAME) as PackagingPlugin).addConfiguration(this, it)
} }
} }