Pill: Exclude 'build' dirs from excluded projects

This commit is contained in:
Yan Zhulanow
2018-04-20 22:47:35 +03:00
parent ba5836d666
commit 5fc18755ca
4 changed files with 34 additions and 5 deletions
+9
View File
@@ -48,6 +48,15 @@ plugins {
id("jps-compatible")
}
pill {
excludedDirs(
"out",
"buildSrc/build",
"buildSrc/prepare-deps/android-dx/build",
"buildSrc/prepare-deps/intellij-sdk/build"
)
}
buildScan {
setTermsOfServiceUrl("https://gradle.com/terms-of-service")
setTermsOfServiceAgree("yes")
+9
View File
@@ -48,6 +48,15 @@ plugins {
id("jps-compatible")
}
pill {
excludedDirs(
"out",
"buildSrc/build",
"buildSrc/prepare-deps/android-dx/build",
"buildSrc/prepare-deps/intellij-sdk/build"
)
}
buildScan {
setTermsOfServiceUrl("https://gradle.com/terms-of-service")
setTermsOfServiceAgree("yes")
@@ -2,6 +2,7 @@
package org.jetbrains.kotlin.pill
import java.io.File
import org.gradle.api.Project
open class PillExtension {
enum class Variant {
@@ -24,6 +25,12 @@ open class PillExtension {
open var importAsLibrary: Boolean = false
open var excludedDirs: List<File> = emptyList()
fun Project.excludedDirs(vararg dirs: String) {
excludedDirs = excludedDirs + dirs.map { File(projectDir, it) }
}
open var libraryPath: File? = null
set(v) {
importAsLibrary = true
+9 -5
View File
@@ -86,9 +86,10 @@ fun parse(project: Project, libraries: List<PLibrary>, context: ParserContext):
return projectVariant in context.variant.includes
}
val modules = project.allprojects
.filter { it.plugins.hasPlugin(JpsCompatiblePlugin::class.java) && it.matchesSelectedVariant() }
.flatMap { parseModules(it) }
val (includedProjects, excludedProjects) = project.allprojects
.partition { it.plugins.hasPlugin(JpsCompatiblePlugin::class.java) && it.matchesSelectedVariant() }
val modules = includedProjects.flatMap { parseModules(it, excludedProjects) }
return PProject("Kotlin", project.projectDir, modules, libraries)
}
@@ -116,7 +117,7 @@ private val SOURCE_SET_MAPPING = mapOf(
"test" to Kind.TEST
)
private fun ParserContext.parseModules(project: Project): List<PModule> {
private fun ParserContext.parseModules(project: Project, excludedProjects: List<Project>): List<PModule> {
val (productionContentRoots, testContentRoots) = parseContentRoots(project).partition { !it.forTests }
val modules = mutableListOf<PModule>()
@@ -124,7 +125,10 @@ private fun ParserContext.parseModules(project: Project): List<PModule> {
fun getJavaExcludedDirs() = project.plugins.findPlugin(IdeaPlugin::class.java)
?.model?.module?.excludeDirs?.toList() ?: emptyList()
val allExcludedDirs = getJavaExcludedDirs() + project.buildDir
fun getPillExcludedDirs() = project.extensions.getByType(PillExtension::class.java).excludedDirs
val allExcludedDirs = getPillExcludedDirs() + getJavaExcludedDirs() + project.buildDir +
(if (project == project.rootProject) excludedProjects.map { it.buildDir } else emptyList())
var productionSourcesModule: PModule? = null