[kotlin] When using compact project structure, create test sourceset but do not create folder for it

^KTIJ-27192 fixed


Merge-request: IJ-MR-117721
Merged-by: Frederik Haselmeier <Frederik.Haselmeier@jetbrains.com>

GitOrigin-RevId: f34966c5dafe51d9f7e08af5825a272c2d93b0bd
This commit is contained in:
Frederik Haselmeier
2023-10-26 16:43:40 +00:00
committed by intellij-monorepo-bot
parent 2e0eec3551
commit 8059da5afb
3 changed files with 8 additions and 22 deletions

View File

@@ -148,17 +148,16 @@ class KotlinPlugin(context: Context) : Plugin(context) {
} }
} }
val createResourceDirectories by booleanSetting("Generate Resource Folders", GenerationPhase.PROJECT_GENERATION) {
defaultValue = value(true)
}
val createSourcesetDirectories by pipelineTask(GenerationPhase.PROJECT_GENERATION) { val createSourcesetDirectories by pipelineTask(GenerationPhase.PROJECT_GENERATION) {
runAfter(createModules) runAfter(createModules)
withAction { withAction {
forEachModule { moduleIR -> forEachModule { moduleIR ->
moduleIR.sourcesets.mapSequenceIgnore { sourcesetIR -> // We do not create test or resource folders when creating a compact project
moduleIR.sourcesets
.filter { it.sourcesetType != SourcesetType.test || !StructurePlugin.useCompactProjectStructure.settingValue }
.mapSequenceIgnore { sourcesetIR ->
sourcesetIR.sourcePaths.filter { sourcesetIR.sourcePaths.filter {
it.key != SourcesetSourceType.RESOURCES || createResourceDirectories.settingValue it.key != SourcesetSourceType.RESOURCES || !StructurePlugin.useCompactProjectStructure.settingValue
}.values.mapSequence { }.values.mapSequence {
with(service<FileSystemWizardService>()) { with(service<FileSystemWizardService>()) {
createDirectory(it) createDirectory(it)
@@ -187,8 +186,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
override val settings: List<PluginSetting<*, *>> = override val settings: List<PluginSetting<*, *>> =
listOf( listOf(
projectKind, projectKind,
modules, modules
createResourceDirectories,
) )
override val pipelineTasks: List<PipelineTask> = override val pipelineTasks: List<PipelineTask> =

View File

@@ -72,9 +72,7 @@ internal class IntelliJKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizar
sdk = sdk, sdk = sdk,
buildSystemType = BuildSystemType.Jps, buildSystemType = BuildSystemType.Jps,
addSampleCode = false, addSampleCode = false,
useCompactProjectStructure = useCompactProject, useCompactProjectStructure = useCompactProject
createResourceDirectories = !useCompactProject,
filterTestSourcesets = useCompactProject
) )
} }
} }

View File

@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.Gradl
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.projectTemplates.applyProjectTemplate import org.jetbrains.kotlin.tools.projectWizard.plugins.projectTemplates.applyProjectTemplate
import org.jetbrains.kotlin.tools.projectWizard.projectTemplates.ConsoleApplicationProjectTemplate import org.jetbrains.kotlin.tools.projectWizard.projectTemplates.ConsoleApplicationProjectTemplate
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
import org.jetbrains.kotlin.tools.projectWizard.wizard.NewProjectWizardModuleBuilder import org.jetbrains.kotlin.tools.projectWizard.wizard.NewProjectWizardModuleBuilder
@@ -64,9 +63,7 @@ class KotlinNewProjectWizard : LanguageNewProjectWizard {
addSampleCode: Boolean = true, addSampleCode: Boolean = true,
gradleVersion: String? = null, gradleVersion: String? = null,
gradleHome: String? = null, gradleHome: String? = null,
useCompactProjectStructure: Boolean = false, useCompactProjectStructure: Boolean = false
createResourceDirectories: Boolean = true,
filterTestSourcesets: Boolean = false
) { ) {
NewProjectWizardModuleBuilder() NewProjectWizardModuleBuilder()
.apply { .apply {
@@ -78,7 +75,6 @@ class KotlinNewProjectWizard : LanguageNewProjectWizard {
StructurePlugin.projectPath.reference.setValue(projectPath.asPath()) StructurePlugin.projectPath.reference.setValue(projectPath.asPath())
StructurePlugin.useCompactProjectStructure.reference.setValue(useCompactProjectStructure) StructurePlugin.useCompactProjectStructure.reference.setValue(useCompactProjectStructure)
StructurePlugin.isCreatingNewProjectHierarchy.reference.setValue(isProject) StructurePlugin.isCreatingNewProjectHierarchy.reference.setValue(isProject)
KotlinPlugin.createResourceDirectories.reference.setValue(createResourceDirectories)
// If a local gradle installation was selected, we want to use the local gradle installation's // If a local gradle installation was selected, we want to use the local gradle installation's
// version so that the wizard knows what kind of build scripts to generate // version so that the wizard knows what kind of build scripts to generate
@@ -97,12 +93,6 @@ class KotlinNewProjectWizard : LanguageNewProjectWizard {
BuildSystemPlugin.type.reference.setValue(buildSystemType) BuildSystemPlugin.type.reference.setValue(buildSystemType)
applyProjectTemplate(ConsoleApplicationProjectTemplate(addSampleCode = addSampleCode)) applyProjectTemplate(ConsoleApplicationProjectTemplate(addSampleCode = addSampleCode))
if (filterTestSourcesets) {
KotlinPlugin.modules.settingValue.forEach { module ->
module.sourceSets = module.sourceSets.filter { it.sourcesetType != SourcesetType.test }
}
}
} }
}.commit(project, null, null) }.commit(project, null, null)
} }