mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 16:28:12 -07:00
IBuildConfigContributor.
Step toward removing javaProject/kotlinProject.
This commit is contained in:
parent
08f5fcd04b
commit
691e59f0cb
10 changed files with 63 additions and 27 deletions
|
@ -139,18 +139,23 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null,
|
||||||
?: 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")
|
||||||
|
|
||||||
val code = project.projectInfo.generateBuildConfig(project, context, pkg, this, buildConfigs)
|
val contributor = ActorUtils.selectAffinityActor(context.pluginInfo.buildConfigContributors, project)
|
||||||
val result = KFiles.makeDir(KFiles.generatedSourceDir(project, this, "buildConfig"))
|
if (contributor != null) {
|
||||||
// Make sure the generatedSourceDirectory doesn't contain the project.directory since
|
val code = contributor.generateBuildConfig(project, context, pkg, this, buildConfigs)
|
||||||
// that directory will be added when trying to find recursively all the sources in it
|
val result = KFiles.makeDir(KFiles.generatedSourceDir(project, this, "buildConfig"))
|
||||||
generatedSourceDirectory = File(result.relativeTo(File(project.directory)))
|
// Make sure the generatedSourceDirectory doesn't contain the project.directory since
|
||||||
val outputGeneratedSourceDirectory = File(result, pkg.replace('.', File.separatorChar))
|
// that directory will be added when trying to find recursively all the sources in it
|
||||||
val compilers = ActorUtils.selectAffinityActors(project, context, context.pluginInfo.compilerContributors)
|
generatedSourceDirectory = File(result.relativeTo(File(project.directory)))
|
||||||
val outputDir = File(outputGeneratedSourceDirectory,
|
val outputGeneratedSourceDirectory = File(result, pkg.replace('.', File.separatorChar))
|
||||||
"BuildConfig" + compilers[0].sourceSuffixes[0])
|
val compilers = ActorUtils.selectAffinityActors(project, context, context.pluginInfo.compilerContributors)
|
||||||
KFiles.saveFile(outputDir, code)
|
val outputDir = File(outputGeneratedSourceDirectory,
|
||||||
log(2, "Generated ${outputDir.path}")
|
"BuildConfig" + compilers[0].sourceSuffixes[0])
|
||||||
return result
|
KFiles.saveFile(outputDir, code)
|
||||||
|
log(2, "Generated ${outputDir.path}")
|
||||||
|
return result
|
||||||
|
} else {
|
||||||
|
throw KobaltException("Couldn't find a contributor to generate BuildConfig")
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.beust.kobalt.api
|
||||||
|
|
||||||
|
import com.beust.kobalt.Variant
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plug-ins that can generate a BuildConfig file.
|
||||||
|
*/
|
||||||
|
interface IBuildConfigContributor : ISimpleAffinity<Project> {
|
||||||
|
fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String, variant: Variant,
|
||||||
|
buildConfigs: List<BuildConfig>) : String
|
||||||
|
}
|
|
@ -2,7 +2,6 @@ package com.beust.kobalt.api
|
||||||
|
|
||||||
import com.beust.kobalt.TestConfig
|
import com.beust.kobalt.TestConfig
|
||||||
import com.beust.kobalt.api.annotation.Directive
|
import com.beust.kobalt.api.annotation.Directive
|
||||||
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 java.io.File
|
import java.io.File
|
||||||
|
@ -21,8 +20,7 @@ open class Project(
|
||||||
@Directive open var scm : Scm? = null,
|
@Directive open var scm : Scm? = null,
|
||||||
@Directive open var url: String? = null,
|
@Directive open var url: String? = null,
|
||||||
@Directive open var licenses: List<License> = arrayListOf<License>(),
|
@Directive open var licenses: List<License> = arrayListOf<License>(),
|
||||||
@Directive open var packageName: String? = group,
|
@Directive open var packageName: String? = group) : IBuildConfig {
|
||||||
val projectInfo: IProjectInfo) : IBuildConfig {
|
|
||||||
|
|
||||||
class ProjectExtra(project: Project) {
|
class ProjectExtra(project: Project) {
|
||||||
val suffixesFound : Set<String> by lazy {
|
val suffixesFound : Set<String> by lazy {
|
||||||
|
|
|
@ -75,6 +75,8 @@ class PluginInfo(val xml: KobaltPluginXml, val classLoader: ClassLoader?) {
|
||||||
val buildConfigFieldContributors = arrayListOf<IBuildConfigFieldContributor>()
|
val buildConfigFieldContributors = arrayListOf<IBuildConfigFieldContributor>()
|
||||||
val taskContributors = arrayListOf<ITaskContributor>()
|
val taskContributors = arrayListOf<ITaskContributor>()
|
||||||
|
|
||||||
|
// Not documented yet
|
||||||
|
val buildConfigContributors = arrayListOf<IBuildConfigContributor>()
|
||||||
val mavenIdInterceptors = arrayListOf<IMavenIdInterceptor>()
|
val mavenIdInterceptors = arrayListOf<IMavenIdInterceptor>()
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -158,6 +160,7 @@ class PluginInfo(val xml: KobaltPluginXml, val classLoader: ClassLoader?) {
|
||||||
// Not documented yet
|
// Not documented yet
|
||||||
if (this is IMavenIdInterceptor) mavenIdInterceptors.add(this)
|
if (this is IMavenIdInterceptor) mavenIdInterceptors.add(this)
|
||||||
if (this is ITestSourceDirectoryContributor) testSourceDirContributors.add(this)
|
if (this is ITestSourceDirectoryContributor) testSourceDirContributors.add(this)
|
||||||
|
if (this is IBuildConfigContributor) buildConfigContributors.add(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -187,6 +190,7 @@ class PluginInfo(val xml: KobaltPluginXml, val classLoader: ClassLoader?) {
|
||||||
taskContributors.addAll(pluginInfo.taskContributors)
|
taskContributors.addAll(pluginInfo.taskContributors)
|
||||||
testSourceDirContributors.addAll(pluginInfo.testSourceDirContributors)
|
testSourceDirContributors.addAll(pluginInfo.testSourceDirContributors)
|
||||||
mavenIdInterceptors.addAll(pluginInfo.mavenIdInterceptors)
|
mavenIdInterceptors.addAll(pluginInfo.mavenIdInterceptors)
|
||||||
|
buildConfigContributors.addAll(pluginInfo.buildConfigContributors)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package com.beust.kobalt.app.java
|
package com.beust.kobalt.app.java
|
||||||
|
|
||||||
import com.beust.kobalt.app.BuildGenerator
|
import com.beust.kobalt.app.BuildGenerator
|
||||||
import com.beust.kobalt.plugin.java.JavaProjectInfo
|
|
||||||
import com.google.inject.Inject
|
|
||||||
|
|
||||||
public class JavaBuildGenerator @Inject constructor (val projectInfo: JavaProjectInfo) : BuildGenerator() {
|
public class JavaBuildGenerator: BuildGenerator() {
|
||||||
override val defaultSourceDirectories = hashSetOf("src/main/java")
|
override val defaultSourceDirectories = hashSetOf("src/main/java")
|
||||||
override val defaultTestDirectories = hashSetOf("src/test/java")
|
override val defaultTestDirectories = hashSetOf("src/test/java")
|
||||||
override val directive = "javaProject"
|
override val directive = "javaProject"
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package com.beust.kobalt.app.kotlin
|
package com.beust.kobalt.app.kotlin
|
||||||
|
|
||||||
import com.beust.kobalt.app.BuildGenerator
|
import com.beust.kobalt.app.BuildGenerator
|
||||||
import com.beust.kobalt.plugin.kotlin.KotlinProjectInfo
|
|
||||||
import com.google.inject.Inject
|
|
||||||
|
|
||||||
public class KotlinBuildGenerator @Inject constructor (val projectInfo: KotlinProjectInfo) : BuildGenerator() {
|
public class KotlinBuildGenerator : BuildGenerator() {
|
||||||
override val defaultSourceDirectories = hashSetOf("src/main/kotlin")
|
override val defaultSourceDirectories = hashSetOf("src/main/kotlin")
|
||||||
override val defaultTestDirectories = hashSetOf("src/test/kotlin")
|
override val defaultTestDirectories = hashSetOf("src/test/kotlin")
|
||||||
override val directive = "kotlinProject"
|
override val directive = "kotlinProject"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.beust.kobalt.plugin.java
|
package com.beust.kobalt.plugin.java
|
||||||
|
|
||||||
import com.beust.kobalt.TaskResult
|
import com.beust.kobalt.TaskResult
|
||||||
|
import com.beust.kobalt.Variant
|
||||||
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.internal.BaseJvmPlugin
|
import com.beust.kobalt.internal.BaseJvmPlugin
|
||||||
|
@ -11,7 +12,8 @@ import javax.inject.Singleton
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
class JavaPlugin @Inject constructor(val javaCompiler: JavaCompiler)
|
class JavaPlugin @Inject constructor(val javaCompiler: JavaCompiler)
|
||||||
: BaseJvmPlugin<JavaConfig>(), IDocContributor, ICompilerContributor, ITestSourceDirectoryContributor {
|
: BaseJvmPlugin<JavaConfig>(), IDocContributor, ICompilerContributor, ITestSourceDirectoryContributor,
|
||||||
|
IBuildConfigContributor {
|
||||||
companion object {
|
companion object {
|
||||||
const val PLUGIN_NAME = "Java"
|
const val PLUGIN_NAME = "Java"
|
||||||
}
|
}
|
||||||
|
@ -57,6 +59,17 @@ class JavaPlugin @Inject constructor(val javaCompiler: JavaCompiler)
|
||||||
override fun testSourceDirectoriesFor(project: Project, context: KobaltContext)
|
override fun testSourceDirectoriesFor(project: Project, context: KobaltContext)
|
||||||
= project.sourceDirectoriesTest.map { File(it) }.toList()
|
= project.sourceDirectoriesTest.map { File(it) }.toList()
|
||||||
|
|
||||||
|
// IBuildConfigContributor
|
||||||
|
override fun affinity(project: Project): Int {
|
||||||
|
return if (project.projectExtra.suffixesFound.contains("java")) 1 else 0
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String,
|
||||||
|
variant: Variant, buildConfigs: List<BuildConfig>): String {
|
||||||
|
return JavaProjectInfo().generateBuildConfig(project, context, packageName, variant, buildConfigs)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Directive
|
@Directive
|
||||||
|
|
|
@ -24,8 +24,7 @@ public class JavaProject(
|
||||||
override var dependencies: Dependencies? = null,
|
override var dependencies: Dependencies? = null,
|
||||||
@Directive
|
@Directive
|
||||||
override var packaging: String? = null)
|
override var packaging: String? = null)
|
||||||
: Project(name, version, directory, buildDirectory, group, artifactId, packaging, dependencies,
|
: Project(name, version, directory, buildDirectory, group, artifactId, packaging, dependencies, ".java") {
|
||||||
".java", projectInfo = JavaProjectInfo()) {
|
|
||||||
|
|
||||||
override public fun toString() = toString("JavaProject", "name", name)
|
override public fun toString() = toString("JavaProject", "name", name)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.beust.kobalt.plugin.kotlin
|
package com.beust.kobalt.plugin.kotlin
|
||||||
|
|
||||||
import com.beust.kobalt.TaskResult
|
import com.beust.kobalt.TaskResult
|
||||||
|
import com.beust.kobalt.Variant
|
||||||
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.internal.BaseJvmPlugin
|
import com.beust.kobalt.internal.BaseJvmPlugin
|
||||||
|
@ -15,7 +16,8 @@ import javax.inject.Singleton
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
class KotlinPlugin @Inject constructor(val executors: KobaltExecutors)
|
class KotlinPlugin @Inject constructor(val executors: KobaltExecutors)
|
||||||
: BaseJvmPlugin<KotlinConfig>(), IDocContributor, IClasspathContributor, ICompilerContributor {
|
: BaseJvmPlugin<KotlinConfig>(), IDocContributor, IClasspathContributor, ICompilerContributor,
|
||||||
|
IBuildConfigContributor {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val PLUGIN_NAME = "Kotlin"
|
const val PLUGIN_NAME = "Kotlin"
|
||||||
|
@ -122,6 +124,15 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors)
|
||||||
log(2, "${project.name}: $s")
|
log(2, "${project.name}: $s")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IBuildConfigContributor
|
||||||
|
override fun affinity(project: Project): Int {
|
||||||
|
return if (project.projectExtra.suffixesFound.contains("kotlin")) 2 else 0
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String,
|
||||||
|
variant: Variant, buildConfigs: List<BuildConfig>): String {
|
||||||
|
return KotlinProjectInfo().generateBuildConfig(project, context, packageName, variant, buildConfigs)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -24,8 +24,7 @@ public class KotlinProject(
|
||||||
override var dependencies: Dependencies? = null,
|
override var dependencies: Dependencies? = null,
|
||||||
@Directive
|
@Directive
|
||||||
override var packaging: String? = null)
|
override var packaging: String? = null)
|
||||||
: Project(name, version, directory, buildDirectory, group, artifactId, packaging, dependencies, ".kt",
|
: Project(name, version, directory, buildDirectory, group, artifactId, packaging, dependencies, ".kt") {
|
||||||
projectInfo = KotlinProjectInfo()) {
|
|
||||||
|
|
||||||
override public fun toString() = toString("KotlinProject", "name", name)
|
override public fun toString() = toString("KotlinProject", "name", name)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue