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,
AndroidModuleConfigurator {
override val moduleKind: ModuleKind get() = ModuleKind.singleplatformAndroid
@NonNls
override val id = "android"
@NonNls
override val suggestedModuleName = "android"
override val text = KotlinNewProjectWizardBundle.message("module.configurator.android")
override val requiresRootBuildFile: Boolean = true
override val resourcesDirectoryName: String = "res"
override val kotlinDirectoryName: String = "java"
override fun createBuildFileIRs(
reader: Reader,
configurationData: ModulesToIrConversionData,
@@ -212,6 +212,9 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
val canContainSubModules: 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(
reader: Reader,
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.RepositoryIR
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.plugins.StructurePlugin
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) {
runAfter(KotlinPlugin::createModules)
withAction {
fun Path.createKotlinAndResourceDirectories() = with(service<FileSystemWizardService>()) {
createDirectory(this@createKotlinAndResourceDirectories / Defaults.KOTLIN_DIR) andThen
createDirectory(this@createKotlinAndResourceDirectories / Defaults.RESOURCES_DIR)
fun Path.createKotlinAndResourceDirectories(moduleConfigurator: ModuleConfigurator) = with(service<FileSystemWizardService>()) {
createDirectory(this@createKotlinAndResourceDirectories / moduleConfigurator.kotlinDirectoryName) andThen
createDirectory(this@createKotlinAndResourceDirectories / moduleConfigurator.resourcesDirectoryName)
}
forEachModule { moduleIR ->
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.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.service.TemplateEngineService
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
@@ -144,18 +142,19 @@ class TemplatesPlugin(context: Context) : Plugin(context) {
&& filePath.sourcesetType == SourcesetType.test
&& settingValue(module.originalModule, ModuleConfiguratorWithTests.testFramework)?.isPresent != true
) return null
val moduleConfigurator = module.originalModule.configurator
return when (module) {
is SingleplatformModuleIR -> {
when (filePath) {
is SrcFilePath -> SRC_DIR / filePath.sourcesetType.toString() / KOTLIN_DIR
is ResourcesFilePath -> SRC_DIR / filePath.sourcesetType.toString() / RESOURCES_DIR
is SrcFilePath -> SRC_DIR / filePath.sourcesetType.toString() / moduleConfigurator.kotlinDirectoryName
is ResourcesFilePath -> SRC_DIR / filePath.sourcesetType.toString() / moduleConfigurator.resourcesDirectoryName
}
}
is MultiplatformModuleIR -> {
val directory = when (filePath) {
is SrcFilePath -> KOTLIN_DIR
is ResourcesFilePath -> RESOURCES_DIR
is SrcFilePath -> moduleConfigurator.kotlinDirectoryName
is ResourcesFilePath -> moduleConfigurator.resourcesDirectoryName
}
SRC_DIR / "${module.name}${filePath.sourcesetType.name.capitalize()}" / directory
}