Adapt AS wizard to changes in main wizard
This commit is contained in:
+2
-2
@@ -19,5 +19,5 @@ pluginManagement {
|
||||
rootProject.name = 'multiplatformMobileApplication'
|
||||
|
||||
|
||||
include(':shared')
|
||||
include(':androidApp')
|
||||
include(':androidApp')
|
||||
include(':shared')
|
||||
+2
-2
@@ -19,5 +19,5 @@ pluginManagement {
|
||||
rootProject.name = "multiplatformMobileApplication"
|
||||
|
||||
|
||||
include(":shared")
|
||||
include(":androidApp")
|
||||
include(":androidApp")
|
||||
include(":shared")
|
||||
+2
-2
@@ -18,9 +18,9 @@ class MainActivity : AppCompatActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main)
|
||||
|
||||
#if( $sharedPackage )
|
||||
#if( $sharedPackage )
|
||||
val tv: TextView = findViewById(R.id.text_view)
|
||||
tv.text = greet()
|
||||
#end
|
||||
#end
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
package ${package}
|
||||
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
package ${package}
|
||||
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
|
||||
+4
-5
@@ -17,10 +17,7 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.javaPackage
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplate
|
||||
@@ -96,7 +93,9 @@ object AndroidSinglePlatformModuleConfigurator :
|
||||
module: Module,
|
||||
modulePath: Path
|
||||
): TaskResult<Unit> = computeM {
|
||||
val sharedModule = configurationData.allModules.firstOrNull { it.configurator == MppModuleConfigurator }
|
||||
val sharedModule = module.dependencies
|
||||
.map { if (it is ModuleReference.ByModule) it.module else null }
|
||||
.firstOrNull { it?.configurator == MppModuleConfigurator }
|
||||
|
||||
val javaPackage = module.javaPackage(configurationData.pomIr)
|
||||
val sharedPackage = sharedModule?.javaPackage(configurationData.pomIr)
|
||||
|
||||
+27
-16
@@ -9,7 +9,10 @@ import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.ModuleConfiguratorProperty
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.projectPath
|
||||
@@ -50,6 +53,13 @@ object MppModuleConfigurator : ModuleConfigurator,
|
||||
override fun getConfiguratorProperties(): List<ModuleConfiguratorProperty<*>> =
|
||||
listOf(mppSources)
|
||||
|
||||
val generateTests by booleanSetting("Generate Tests", GenerationPhase.PROJECT_GENERATION) {
|
||||
defaultValue = value(false)
|
||||
}
|
||||
|
||||
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
|
||||
super.getConfiguratorSettings() + generateTests
|
||||
|
||||
override fun Writer.runArbitraryTask(
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module,
|
||||
@@ -84,18 +94,20 @@ object MppModuleConfigurator : ModuleConfigurator,
|
||||
modulePath: Path
|
||||
): TaskResult<Unit> = inContextOfModuleConfigurator(module) {
|
||||
val mppFiles = mppSources.reference.propertyValue
|
||||
module.subModules.mapSequenceIgnore mapTargets@{ target ->
|
||||
val filesWithPaths = module.subModules.flatMap { target ->
|
||||
val moduleSubType = //TODO handle for non-simple target configurator
|
||||
target.configurator.safeAs<SimpleTargetConfigurator>()?.moduleSubType ?: return@mapTargets UNIT_SUCCESS
|
||||
val files = mppFiles.flatMap { it.getFilesFor(moduleSubType) }.distinctBy { it.uniqueIdentifier }
|
||||
val fileTemplates = files.map { file ->
|
||||
FileTemplate(
|
||||
file.fileDescriptor,
|
||||
projectPath / pathForFileInTarget(modulePath, module, file.javaPackage, file.filename, target, file.type),
|
||||
mapOf("package" to file.javaPackage?.asCodePackage())
|
||||
)
|
||||
}
|
||||
TemplatesPlugin.fileTemplatesToRender.addValues(fileTemplates)
|
||||
target.configurator.safeAs<SimpleTargetConfigurator>()?.moduleSubType ?: return@flatMap emptyList()
|
||||
mppFiles
|
||||
.flatMap { it.getFilesFor(moduleSubType) }
|
||||
.distinctBy { it.uniqueIdentifier }
|
||||
.map { file ->
|
||||
val path = projectPath / pathForFileInTarget(modulePath, module, file.javaPackage, file.filename, target, file.type)
|
||||
file to path
|
||||
}
|
||||
}.distinctBy { (_, path) -> path }
|
||||
filesWithPaths.mapSequenceIgnore { (file, path) ->
|
||||
val fileTemplate = FileTemplate(file.fileDescriptor, path, mapOf("package" to file.javaPackage?.asCodePackage()))
|
||||
TemplatesPlugin.fileTemplatesToRender.addValues(fileTemplate)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,8 +157,7 @@ data class MppFile(
|
||||
}
|
||||
|
||||
@ExpectFileDSL
|
||||
class Builder(private val filename: String) {
|
||||
var `package`: String? = null
|
||||
class Builder(private val filename: String, val javaPackage: JavaPackage? = null) {
|
||||
private val declarations = mutableListOf<MppDeclaration>()
|
||||
|
||||
fun function(signature: String, init: MppFunction.Builder.() -> Unit = {}) {
|
||||
@@ -157,7 +168,7 @@ data class MppFile(
|
||||
declarations += MppClass.Builder(name).apply(init).build()
|
||||
}
|
||||
|
||||
fun build() = MppFile(filename, `package`?.let(::JavaPackage), declarations)
|
||||
fun build() = MppFile(filename, javaPackage, declarations)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +184,7 @@ class MppSources(val mppFiles: List<MppFile>, val simpleFiles: List<SimpleFiles>
|
||||
private val simpleFiles = mutableListOf<SimpleFiles>()
|
||||
|
||||
fun mppFile(filename: String, init: MppFile.Builder.() -> Unit) {
|
||||
mppFiles += MppFile.Builder(filename).apply(init).build()
|
||||
mppFiles += MppFile.Builder(filename, javaPackage).apply(init).build()
|
||||
}
|
||||
|
||||
fun filesFor(vararg moduleSubTypes: ModuleSubType, init: SimpleFiles.Builder.() -> Unit) {
|
||||
@@ -210,7 +221,7 @@ data class SimpleFile(val fileDescriptor: FileDescriptor, val javaPackage: JavaP
|
||||
}
|
||||
|
||||
|
||||
fun mppSources(javaPackage: JavaPackage, init: MppSources.Builder.() -> Unit): MppSources =
|
||||
fun mppSources(javaPackage: JavaPackage? = null, init: MppSources.Builder.() -> Unit): MppSources =
|
||||
MppSources.Builder(javaPackage).apply(init).build()
|
||||
|
||||
sealed class MppDeclaration {
|
||||
|
||||
+16
-1
@@ -1,3 +1,8 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
@@ -11,6 +16,7 @@ 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.moduleConfigurators.inContextOfModuleConfigurator
|
||||
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
|
||||
@@ -129,13 +135,21 @@ 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) {
|
||||
runAfter(KotlinPlugin.createModules)
|
||||
withAction {
|
||||
fun Path.createKotlinAndResourceDirectories(moduleConfigurator: ModuleConfigurator) =
|
||||
with(service<FileSystemWizardService>()) {
|
||||
createDirectory(this@createKotlinAndResourceDirectories / moduleConfigurator.kotlinDirectoryName) andThen
|
||||
createDirectory(this@createKotlinAndResourceDirectories / moduleConfigurator.resourcesDirectoryName)
|
||||
if (createResourceDirectories.settingValue) {
|
||||
createDirectory(this@createKotlinAndResourceDirectories / moduleConfigurator.resourcesDirectoryName)
|
||||
} else {
|
||||
UNIT_SUCCESS
|
||||
}
|
||||
}
|
||||
|
||||
forEachModule { moduleIR ->
|
||||
@@ -165,6 +179,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
||||
listOf(
|
||||
projectKind,
|
||||
modules,
|
||||
createResourceDirectories,
|
||||
)
|
||||
|
||||
override val pipelineTasks: List<PipelineTask> =
|
||||
|
||||
+11
-8
@@ -201,8 +201,6 @@ private fun Writer.addExpectFilesForMppModuleForAndroidAndIos(mppModule: Module,
|
||||
|
||||
val expectFiles = mppSources(javaPackage) {
|
||||
mppFile("Platform.kt") {
|
||||
`package` = javaPackage.asCodePackage()
|
||||
|
||||
`class`("Platform") {
|
||||
expectBody = "val platform: String"
|
||||
actualFor(
|
||||
@@ -213,7 +211,7 @@ private fun Writer.addExpectFilesForMppModuleForAndroidAndIos(mppModule: Module,
|
||||
actualFor(
|
||||
ModuleSubType.iosArm64, ModuleSubType.iosX64, ModuleSubType.ios,
|
||||
actualBody =
|
||||
"""actual val platform: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion"""
|
||||
"""actual val platform: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion"""
|
||||
) {
|
||||
import("platform.UIKit.UIDevice")
|
||||
}
|
||||
@@ -224,13 +222,18 @@ private fun Writer.addExpectFilesForMppModuleForAndroidAndIos(mppModule: Module,
|
||||
file(FileTemplateDescriptor("mppCommon/Greeting.kt.vm", relativePath = null), "Greeting.kt", SourcesetType.main)
|
||||
}
|
||||
|
||||
filesFor(ModuleSubType.android) {
|
||||
file(FileTemplateDescriptor("android/androidTest.kt.vm", relativePath = null), "androidTest.kt", SourcesetType.test)
|
||||
inContextOfModuleConfigurator(mppModule) {
|
||||
if (MppModuleConfigurator.generateTests.reference.settingValue) {
|
||||
filesFor(ModuleSubType.android) {
|
||||
file(FileTemplateDescriptor("android/androidTest.kt.vm", relativePath = null), "androidTest.kt", SourcesetType.test)
|
||||
}
|
||||
|
||||
filesFor(ModuleSubType.iosArm64, ModuleSubType.iosX64, ModuleSubType.ios) {
|
||||
file(FileTemplateDescriptor("ios/iosTest.kt.vm", relativePath = null), "iosTest.kt", SourcesetType.test)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
filesFor(ModuleSubType.iosArm64, ModuleSubType.iosX64, ModuleSubType.ios) {
|
||||
file(FileTemplateDescriptor("ios/iosTest.kt.vm", relativePath = null), "iosTest.kt", SourcesetType.test)
|
||||
}
|
||||
}
|
||||
return inContextOfModuleConfigurator(mppModule) { MppModuleConfigurator.mppSources.reference.addValues(listOf(expectFiles)) }
|
||||
}
|
||||
+4
-4
@@ -18,7 +18,7 @@ class ExpectedFileTest {
|
||||
function("f(x: Int): String")
|
||||
function("y(x: Int): String")
|
||||
}
|
||||
}.first()
|
||||
}.mppFiles.first()
|
||||
val generatedFileText = file.printForModuleSubType(ModuleSubType.common)
|
||||
val expectedFileText = """
|
||||
expect fun f(x: Int): String
|
||||
@@ -35,7 +35,7 @@ class ExpectedFileTest {
|
||||
`class`("A")
|
||||
`class`("B")
|
||||
}
|
||||
}.first()
|
||||
}.mppFiles.first()
|
||||
val generatedFileText = file.printForModuleSubType(ModuleSubType.common)
|
||||
val expectedFileText = """
|
||||
expected class A expected constructor()
|
||||
@@ -58,7 +58,7 @@ class ExpectedFileTest {
|
||||
default("TODO()")
|
||||
}
|
||||
}
|
||||
}.first()
|
||||
}.mppFiles.first()
|
||||
run {
|
||||
val generatedFileText = file.printForModuleSubType(ModuleSubType.jvm)
|
||||
val expectedFileText = """
|
||||
@@ -103,7 +103,7 @@ class ExpectedFileTest {
|
||||
default("// nothing here")
|
||||
}
|
||||
}
|
||||
}.first()
|
||||
}.mppFiles.first()
|
||||
run {
|
||||
val generatedFileText = file.printForModuleSubType(ModuleSubType.jvm)
|
||||
val expectedFileText = """
|
||||
|
||||
Reference in New Issue
Block a user