Wizard: fix kotlin and resources directory names in Android module

#KT-38428 fixed
This commit is contained in:
Ilya Kirillov
2020-04-24 21:43:35 +03:00
parent ccb8a93ee3
commit 56eebed1d8
4 changed files with 18 additions and 10 deletions
@@ -21,14 +21,19 @@ object AndroidSinglePlatformModuleConfigurator :
SinglePlatformModuleConfigurator, SinglePlatformModuleConfigurator,
AndroidModuleConfigurator { AndroidModuleConfigurator {
override val moduleKind: ModuleKind get() = ModuleKind.singleplatformAndroid override val moduleKind: ModuleKind get() = ModuleKind.singleplatformAndroid
@NonNls @NonNls
override val id = "android" override val id = "android"
@NonNls @NonNls
override val suggestedModuleName = "android" override val suggestedModuleName = "android"
override val text = KotlinNewProjectWizardBundle.message("module.configurator.android") override val text = KotlinNewProjectWizardBundle.message("module.configurator.android")
override val requiresRootBuildFile: Boolean = true override val requiresRootBuildFile: Boolean = true
override val resourcesDirectoryName: String = "res"
override val kotlinDirectoryName: String = "java"
override fun createBuildFileIRs( override fun createBuildFileIRs(
reader: Reader, reader: Reader,
configurationData: ModulesToIrConversionData, configurationData: ModulesToIrConversionData,
@@ -212,6 +212,9 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
val canContainSubModules: Boolean get() = false val canContainSubModules: Boolean get() = false
val requiresRootBuildFile: Boolean get() = false val requiresRootBuildFile: Boolean get() = false
val kotlinDirectoryName: String get() = Defaults.KOTLIN_DIR.toString()
val resourcesDirectoryName: String get() = Defaults.RESOURCES_DIR.toString()
fun createBuildFileIRs( fun createBuildFileIRs(
reader: Reader, reader: Reader,
configurationData: ModulesToIrConversionData, configurationData: ModulesToIrConversionData,
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.service.*
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryIR
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.withIrs import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.withIrs
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfigurator
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
import org.jetbrains.kotlin.tools.projectWizard.plugins.StructurePlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.StructurePlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
@@ -106,14 +107,14 @@ class KotlinPlugin(context: Context) : Plugin(context) {
val createSourcesetDirectories by pipelineTask(GenerationPhase.PROJECT_GENERATION) { val createSourcesetDirectories by pipelineTask(GenerationPhase.PROJECT_GENERATION) {
runAfter(KotlinPlugin::createModules) runAfter(KotlinPlugin::createModules)
withAction { withAction {
fun Path.createKotlinAndResourceDirectories() = with(service<FileSystemWizardService>()) { fun Path.createKotlinAndResourceDirectories(moduleConfigurator: ModuleConfigurator) = with(service<FileSystemWizardService>()) {
createDirectory(this@createKotlinAndResourceDirectories / Defaults.KOTLIN_DIR) andThen createDirectory(this@createKotlinAndResourceDirectories / moduleConfigurator.kotlinDirectoryName) andThen
createDirectory(this@createKotlinAndResourceDirectories / Defaults.RESOURCES_DIR) createDirectory(this@createKotlinAndResourceDirectories / moduleConfigurator.resourcesDirectoryName)
} }
forEachModule { moduleIR -> forEachModule { moduleIR ->
moduleIR.sourcesets.mapSequenceIgnore { sourcesetIR -> moduleIR.sourcesets.mapSequenceIgnore { sourcesetIR ->
sourcesetIR.path.createKotlinAndResourceDirectories() sourcesetIR.path.createKotlinAndResourceDirectories(moduleIR.originalModule.configurator)
} }
} }
} }
@@ -2,8 +2,6 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.*
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.KOTLIN_DIR
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.RESOURCES_DIR
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.SRC_DIR import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.SRC_DIR
import org.jetbrains.kotlin.tools.projectWizard.core.service.TemplateEngineService import org.jetbrains.kotlin.tools.projectWizard.core.service.TemplateEngineService
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
@@ -144,18 +142,19 @@ class TemplatesPlugin(context: Context) : Plugin(context) {
&& filePath.sourcesetType == SourcesetType.test && filePath.sourcesetType == SourcesetType.test
&& settingValue(module.originalModule, ModuleConfiguratorWithTests.testFramework)?.isPresent != true && settingValue(module.originalModule, ModuleConfiguratorWithTests.testFramework)?.isPresent != true
) return null ) return null
val moduleConfigurator = module.originalModule.configurator
return when (module) { return when (module) {
is SingleplatformModuleIR -> { is SingleplatformModuleIR -> {
when (filePath) { when (filePath) {
is SrcFilePath -> SRC_DIR / filePath.sourcesetType.toString() / KOTLIN_DIR is SrcFilePath -> SRC_DIR / filePath.sourcesetType.toString() / moduleConfigurator.kotlinDirectoryName
is ResourcesFilePath -> SRC_DIR / filePath.sourcesetType.toString() / RESOURCES_DIR is ResourcesFilePath -> SRC_DIR / filePath.sourcesetType.toString() / moduleConfigurator.resourcesDirectoryName
} }
} }
is MultiplatformModuleIR -> { is MultiplatformModuleIR -> {
val directory = when (filePath) { val directory = when (filePath) {
is SrcFilePath -> KOTLIN_DIR is SrcFilePath -> moduleConfigurator.kotlinDirectoryName
is ResourcesFilePath -> RESOURCES_DIR is ResourcesFilePath -> moduleConfigurator.resourcesDirectoryName
} }
SRC_DIR / "${module.name}${filePath.sourcesetType.name.capitalize()}" / directory SRC_DIR / "${module.name}${filePath.sourcesetType.name.capitalize()}" / directory
} }