From 733cd8891a8eedfbf6e7a7aee10dd574cb94f82d Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 9 Oct 2020 22:21:00 +0300 Subject: [PATCH] Wizard: simplify android configuration --- .../expected/shared/build.gradle | 7 ---- .../expected/shared/build.gradle.kts | 7 ---- .../expected/build.gradle | 7 ---- .../expected/build.gradle.kts | 7 ---- .../ir/buildsystem/gradle/AndroidIR.kt | 40 ++++++++++++------- .../AndroidModuleConfigurator.kt | 16 ++++---- ...AndroidSinglePlatformModuleConfigurator.kt | 15 +++++++ 7 files changed, 49 insertions(+), 50 deletions(-) diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle index 05938c05cac..cbaa4950a9e 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle @@ -64,13 +64,6 @@ android { defaultConfig { minSdkVersion 24 targetSdkVersion 29 - versionCode 1 - versionName '1.0' - } - buildTypes { - 'release' { - minifyEnabled false - } } } diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle.kts index 69513dabc6e..e649249a4f4 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileApplication/expected/shared/build.gradle.kts @@ -58,13 +58,6 @@ android { defaultConfig { minSdkVersion(24) targetSdkVersion(29) - versionCode = 1 - versionName = "1.0" - } - buildTypes { - getByName("release") { - isMinifyEnabled = false - } } } diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/expected/build.gradle b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/expected/build.gradle index 5f18e88c4fa..54ca8b883c4 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/expected/build.gradle +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/expected/build.gradle @@ -62,12 +62,5 @@ android { defaultConfig { minSdkVersion 24 targetSdkVersion 29 - versionCode 1 - versionName '1.0' - } - buildTypes { - 'release' { - minifyEnabled false - } } } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/expected/build.gradle.kts b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/expected/build.gradle.kts index 4a8e63c8c93..84524f6e92a 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/expected/build.gradle.kts +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/projectTemplatesBuildFileGeneration/multiplatformMobileLibrary/expected/build.gradle.kts @@ -56,12 +56,5 @@ android { defaultConfig { minSdkVersion(24) targetSdkVersion(29) - versionCode = 1 - versionName = "1.0" - } - buildTypes { - getByName("release") { - isMinifyEnabled = false - } } } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/AndroidIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/AndroidIR.kt index 769730d1805..96dcd07e507 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/AndroidIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/AndroidIR.kt @@ -9,7 +9,12 @@ import java.nio.file.Path interface AndroidIR : GradleIR //TODO parematrize -data class AndroidConfigIR(val javaPackage: JavaPackage?, val newManifestPath: Path?) : AndroidIR, FreeIR { +data class AndroidConfigIR( + val javaPackage: JavaPackage?, + val newManifestPath: Path?, + val printVersionCode: Boolean, + val printBuildTypes: Boolean, +) : AndroidIR, FreeIR { override fun GradlePrinter.renderGradle() { sectionCall("android", needIndent = true) { call("compileSdkVersion") { +"29" }; nlIndented() // TODO dehardcode @@ -29,23 +34,28 @@ data class AndroidConfigIR(val javaPackage: JavaPackage?, val newManifestPath: P assignmentOrCall("applicationId") { +javaPackage.asCodePackage().quotified }; nlIndented() } call("minSdkVersion") { +"24" }; nlIndented() // TODO dehardcode - call("targetSdkVersion") { +"29" }; nlIndented() // TODO dehardcode - assignmentOrCall("versionCode") { +"1" }; nlIndented() - assignmentOrCall("versionName") { +"1.0".quotified } - } - nlIndented() - sectionCall("buildTypes", needIndent = true) { - val sectionIdentifier = when (dsl) { - GradlePrinter.GradleDsl.KOTLIN -> """getByName("release")""" - GradlePrinter.GradleDsl.GROOVY -> "release".quotified + call("targetSdkVersion") { +"29" };// TODO dehardcode + if (printVersionCode) { + nlIndented() + assignmentOrCall("versionCode") { +"1" }; nlIndented() + assignmentOrCall("versionName") { +"1.0".quotified } } - sectionCall(sectionIdentifier, needIndent = true) { - val minifyCallName = when (dsl) { - GradlePrinter.GradleDsl.KOTLIN -> "isMinifyEnabled" - GradlePrinter.GradleDsl.GROOVY -> "minifyEnabled" + } + if (printBuildTypes) { + nlIndented() + sectionCall("buildTypes", needIndent = true) { + val sectionIdentifier = when (dsl) { + GradlePrinter.GradleDsl.KOTLIN -> """getByName("release")""" + GradlePrinter.GradleDsl.GROOVY -> "release".quotified } + sectionCall(sectionIdentifier, needIndent = true) { + val minifyCallName = when (dsl) { + GradlePrinter.GradleDsl.KOTLIN -> "isMinifyEnabled" + GradlePrinter.GradleDsl.GROOVY -> "minifyEnabled" + } - assignmentOrCall(minifyCallName) { +"false" } + assignmentOrCall(minifyCallName) { +"false" } + } } } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt index 31ecfdbb145..32ddd9f8e81 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt @@ -70,13 +70,6 @@ interface AndroidModuleConfigurator : ModuleConfigurator, +GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName, priority = 1) +GradleOnlyPluginByNameIR("kotlin-android-extensions", priority = 3) - +AndroidConfigIR( - javaPackage = when (reader.createAndroidPlugin(module)) { - AndroidGradlePlugin.APPLICATION -> module.javaPackage(configurationData.pomIr) - AndroidGradlePlugin.LIBRARY -> null - }, - newManifestPath = getNewAndroidManifestPath(module) - ) +createRepositories(configurationData.kotlinVersion).map(::RepositoryIR) } @@ -203,6 +196,15 @@ object AndroidTargetConfigurator : TargetConfigurator, buildList { +super.createBuildFileIRs(reader, configurationData, module) +super.createBuildFileIRs(reader, configurationData, module) + +AndroidConfigIR( + javaPackage = when (reader.createAndroidPlugin(module)) { + AndroidGradlePlugin.APPLICATION -> module.javaPackage(configurationData.pomIr) + AndroidGradlePlugin.LIBRARY -> null + }, + newManifestPath = getNewAndroidManifestPath(module), + printVersionCode = false, + printBuildTypes = false, + ) } val androidPlugin by enumSetting( diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt index 4948b5a6fa2..d451d0bdc6b 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt @@ -11,10 +11,12 @@ import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.Versions import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.AndroidConfigIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.BuildScriptDependencyIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.BuildScriptRepositoryIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact +import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidTargetConfigurator.createAndroidPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.GradlePlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin @@ -62,6 +64,19 @@ object AndroidSinglePlatformModuleConfigurator : } } + override fun createBuildFileIRs(reader: Reader, configurationData: ModulesToIrConversionData, module: Module) = irsList { + +super.createBuildFileIRs(reader, configurationData, module) + +AndroidConfigIR( + javaPackage = when (reader.createAndroidPlugin(module)) { + AndroidGradlePlugin.APPLICATION -> module.javaPackage(configurationData.pomIr) + AndroidGradlePlugin.LIBRARY -> null + }, + newManifestPath = getNewAndroidManifestPath(module), + printVersionCode = true, + printBuildTypes = true, + ) + } + override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? = KotlinBuildSystemPluginIR( KotlinBuildSystemPluginIR.Type.android,