From 5fc18755caae25af4152e565eb2430c810a771c2 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Fri, 20 Apr 2018 22:47:35 +0300 Subject: [PATCH] Pill: Exclude 'build' dirs from excluded projects --- build.gradle.kts | 9 +++++++++ build.gradle.kts.182 | 9 +++++++++ buildSrc/src/main/kotlin/pill/extension.kt | 7 +++++++ buildSrc/src/main/kotlin/pill/parser.kt | 14 +++++++++----- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index ae59a2ac8d4..52e45e6aec6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -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") diff --git a/build.gradle.kts.182 b/build.gradle.kts.182 index b3a29ae6b14..91fed6a0fa4 100644 --- a/build.gradle.kts.182 +++ b/build.gradle.kts.182 @@ -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") diff --git a/buildSrc/src/main/kotlin/pill/extension.kt b/buildSrc/src/main/kotlin/pill/extension.kt index 39061a4d03e..b9b0199f5a9 100644 --- a/buildSrc/src/main/kotlin/pill/extension.kt +++ b/buildSrc/src/main/kotlin/pill/extension.kt @@ -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 = emptyList() + + fun Project.excludedDirs(vararg dirs: String) { + excludedDirs = excludedDirs + dirs.map { File(projectDir, it) } + } + open var libraryPath: File? = null set(v) { importAsLibrary = true diff --git a/buildSrc/src/main/kotlin/pill/parser.kt b/buildSrc/src/main/kotlin/pill/parser.kt index cfb39ecf4d6..faded45bc01 100644 --- a/buildSrc/src/main/kotlin/pill/parser.kt +++ b/buildSrc/src/main/kotlin/pill/parser.kt @@ -86,9 +86,10 @@ fun parse(project: Project, libraries: List, 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 { +private fun ParserContext.parseModules(project: Project, excludedProjects: List): List { val (productionContentRoots, testContentRoots) = parseContentRoots(project).partition { !it.forTests } val modules = mutableListOf() @@ -124,7 +125,10 @@ private fun ParserContext.parseModules(project: Project): List { 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