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

Allow plug-ins to contribute multiple compilers.

This commit is contained in:
Cedric Beust 2016-02-10 21:43:01 +04:00
parent c2312a8854
commit c1185fdf96
5 changed files with 84 additions and 49 deletions

View file

@ -41,23 +41,28 @@ class JavaPlugin @Inject constructor(val javaCompiler: JavaCompiler)
// ICompilerFlagsContributor
override fun flagsFor(project: Project, context: KobaltContext, currentFlags: List<String>,
suffixesBeingCompiled: List<String>) =
maybeCompilerArgs(sourceSuffixes, suffixesBeingCompiled,
maybeCompilerArgs(compiler.sourceSuffixes, suffixesBeingCompiled,
configurationFor(project)?.compilerArgs ?: listOf<String>())
// ICompilerContributor
override val sourceSuffixes = listOf("java")
val compiler = object: ICompiler {
// ICompilerContributor
override val sourceSuffixes = listOf("java")
override fun compile(project: Project, context: KobaltContext, info: CompilerActionInfo) : TaskResult {
val result =
if (info.sourceFiles.size > 0) {
javaCompiler.compile(project, context, info)
} else {
warn("Couldn't find any source files to compile")
TaskResult()
}
return result
override fun compile(project: Project, context: KobaltContext, info: CompilerActionInfo): TaskResult {
val result =
if (info.sourceFiles.size > 0) {
javaCompiler.compile(project, context, info)
} else {
warn("Couldn't find any source files to compile")
TaskResult()
}
return result
}
}
override fun compilersFor(project: Project, context: KobaltContext) = arrayListOf(compiler)
// ITestSourceDirectoryContributor
override fun testSourceDirectoriesFor(project: Project, context: KobaltContext)
= project.sourceDirectoriesTest.map { File(it) }.toList()
@ -65,7 +70,7 @@ class JavaPlugin @Inject constructor(val javaCompiler: JavaCompiler)
// IBuildConfigContributor
override fun affinity(project: Project) = if (project.projectExtra.suffixesFound.contains("java")) 1 else 0
override val buildConfigSuffix = sourceSuffixes[0]
override val buildConfigSuffix = compiler.sourceSuffixes[0]
override fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String,
variant: Variant, buildConfigs: List<BuildConfig>): String {

View file

@ -39,7 +39,7 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors)
// ICompilerFlagsContributor
override fun flagsFor(project: Project, context: KobaltContext, currentFlags: List<String>,
suffixesBeingCompiled: List<String>) : List<String> {
val result = maybeCompilerArgs(sourceSuffixes, suffixesBeingCompiled,
val result = maybeCompilerArgs(compiler.sourceSuffixes, suffixesBeingCompiled,
configurationFor(project)?.compilerArgs ?: listOf<String>())
return result
}
@ -105,22 +105,26 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors)
// ICompilerContributor
override val sourceSuffixes = listOf("kt")
val compiler = object: ICompiler {
override val sourceSuffixes = listOf("kt")
override fun compile(project: Project, context: KobaltContext, info: CompilerActionInfo) : TaskResult {
val result =
if (info.sourceFiles.size > 0) {
compilePrivate(project, info.dependencies, info.sourceFiles, info.outputDir, info.compilerArgs)
} else {
warn("Couldn't find any source files")
TaskResult()
}
override fun compile(project: Project, context: KobaltContext, info: CompilerActionInfo): TaskResult {
val result =
if (info.sourceFiles.size > 0) {
compilePrivate(project, info.dependencies, info.sourceFiles, info.outputDir, info.compilerArgs)
} else {
warn("Couldn't find any source files")
TaskResult()
}
lp(project, "Compilation " + if (result.success) "succeeded" else "failed")
return result
lp(project, "Compilation " + if (result.success) "succeeded" else "failed")
return result
}
}
// private val dokkaConfigurations = ArrayListMultimap.create<String, DokkaConfig>()
override fun compilersFor(project: Project, context: KobaltContext) = arrayListOf(compiler)
// private val dokkaConfigurations = ArrayListMultimap.create<String, DokkaConfig>()
//
// fun addDokkaConfiguration(project: Project, dokkaConfig: DokkaConfig) {
// dokkaConfigurations.put(project.name, dokkaConfig)