Continue switching projects to improved dsl: sourceSets and test running

This commit is contained in:
Ilya Chernikov
2017-08-21 20:53:48 +02:00
parent 336e24b837
commit deda50dbbb
76 changed files with 372 additions and 614 deletions
+5 -76
View File
@@ -1,83 +1,11 @@
@file:Suppress("unused") // usages in build scripts are not tracked properly
import org.gradle.api.*
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.internal.HasConvention
import org.gradle.api.plugins.JavaPluginConvention
import org.gradle.api.tasks.*
import org.gradle.kotlin.dsl.*
import java.io.File
//import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
private fun Project.configureKotlinProjectSourceSet(srcs: Iterable<File>,
sourceSetName: String,
getSources: SourceSet.() -> SourceDirectorySet,
configureSourceDirs: SourceDirectorySet.() -> Unit) =
configure<JavaPluginConvention> {
// if (srcs.none()) {
// sourceSets.removeIf { it.name == sourceSetName }
// }
// else {
sourceSets.matching { it.name == sourceSetName }.forEach { it.getSources().setSrcDirs(srcs).configureSourceDirs() }
// }
}
private fun Project.configureKotlinProjectSourceSet(vararg srcs: String, sourceSetName: String,
getSources: SourceSet.() -> SourceDirectorySet,
sourcesBaseDir: File? = null,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectSourceSet(srcs.map { File(sourcesBaseDir ?: projectDir, it) }, sourceSetName, getSources, configureSourceDirs)
fun Project.configureKotlinProjectSources(vararg srcs: String,
sourcesBaseDir: File? = null,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectSourceSet(*srcs, sourceSetName = "main", getSources = { this.java },
sourcesBaseDir = sourcesBaseDir, configureSourceDirs = configureSourceDirs)
fun Project.configureKotlinProjectSources(srcs: Iterable<File>,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectSourceSet(srcs, sourceSetName = "main", getSources = { this.java }, configureSourceDirs = configureSourceDirs)
fun Project.configureKotlinProjectSourcesDefault(sourcesBaseDir: File? = null,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectSources("src", sourcesBaseDir = sourcesBaseDir, configureSourceDirs = configureSourceDirs)
fun Project.configureKotlinProjectResources(vararg srcs: String,
sourcesBaseDir: File? = null,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectSourceSet(*srcs, sourceSetName = "main", getSources = { this.resources },
sourcesBaseDir = sourcesBaseDir, configureSourceDirs = configureSourceDirs)
fun Project.configureKotlinProjectResources(srcs: Iterable<File>,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectSourceSet(srcs, sourceSetName = "main", getSources = { this.resources }, configureSourceDirs = configureSourceDirs)
fun Project.configureKotlinProjectResourcesDefault(sourcesBaseDir: File? = null) {
configureKotlinProjectResources("resources", sourcesBaseDir = sourcesBaseDir)
configureKotlinProjectResources("src", sourcesBaseDir = sourcesBaseDir) { include("META-INF/**", "**/*.properties") }
}
fun Project.configureKotlinProjectNoTests() {
configureKotlinProjectSourceSet(sourceSetName = "test", getSources = { this.java })
configureKotlinProjectSourceSet(sourceSetName = "test", getSources = { this.resources })
}
fun Project.configureKotlinProjectTests(vararg srcs: String, sourcesBaseDir: File? = null,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectSourceSet(*srcs, sourceSetName = "test", getSources = { this.java },
sourcesBaseDir = sourcesBaseDir, configureSourceDirs = configureSourceDirs)
fun Project.configureKotlinProjectTestsDefault(sourcesBaseDir: File? = null,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectTests("test", "tests", sourcesBaseDir = sourcesBaseDir, configureSourceDirs = configureSourceDirs)
fun Project.configureKotlinProjectTestResources(vararg srcs: String,
sourcesBaseDir: File? = null,
configureSourceDirs: SourceDirectorySet.() -> Unit = {}) =
configureKotlinProjectSourceSet(*srcs, sourceSetName = "test", getSources = { this.resources },
sourcesBaseDir = sourcesBaseDir, configureSourceDirs = configureSourceDirs)
inline fun Project.sourceSets(crossinline body: SourceSetsBuilder.() -> Unit) =
SourceSetsBuilder(this).body()
@@ -88,6 +16,7 @@ class SourceSetsBuilder(val project: Project) {
project.configure<JavaPluginConvention>
{
sourceSets.matching { it.name == sourceSetName }.forEach {
none()
it.body()
}
}
@@ -95,15 +24,15 @@ class SourceSetsBuilder(val project: Project) {
}
fun SourceSet.none() {
java.srcDirs()
resources.srcDirs()
java.setSrcDirs(emptyList<String>())
resources.setSrcDirs(emptyList<String>())
}
fun SourceSet.projectDefault() {
when (name) {
"main" -> {
java.srcDirs("src")
resources.srcDir("resources")
resources.srcDir("resources").apply { include("**") }
resources.srcDir("src").apply { include("META-INF/**", "**/*.properties") }
}
"test" -> {
@@ -112,7 +41,7 @@ fun SourceSet.projectDefault() {
}
}
// TODO: adding dep to the plugin breaks the build unexpectedly, resolve and uncomment
// TODO: adding KotlinSourceSet dep to the plugin breaks the build unexpectedly, resolve and uncomment
//val SourceSet.kotlin: SourceDirectorySet
// get() =
// (this as HasConvention)