From 4f4106a17e2d15ecbfe7479bd3d796d1a36438df Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 14 Jan 2020 18:58:36 +0300 Subject: [PATCH] Wizard: print repositories for Maven #KT-35715 fixed --- .../buildFileGeneration/kotlinJvm/pom.xml | 7 ++++++ .../ir/buildsystem/BuildFileIR.kt | 22 ++++++++++------ .../ir/buildsystem/RepositoryIR.kt | 18 ++++++------- .../settings/buildsystem/Repository.kt | 25 ++++++++++++++----- 4 files changed, 49 insertions(+), 23 deletions(-) diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/pom.xml index e35235005f5..6f189cee6be 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/pom.xml +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/pom.xml @@ -16,6 +16,13 @@ official + + + mavenCentral + https://repo1.maven.org/maven2/ + + + src/main/kotlin src/test/kotlin diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt index 06b27afd89a..d5068d52782 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt @@ -27,6 +27,13 @@ data class BuildFileIR( fun withModulesUpdated(updater: (ModuleIR) -> TaskResult): TaskResult = modules.withModulesUpdated(updater).map { newModules -> copy(modules = newModules) } + private fun distinctRepositories(): List = + irsOfType() + .distinctBy { it.repository } + .sortedBy { repositoryIR -> + if (repositoryIR.repository is DefaultRepository) 0 else 1 + } + override fun BuildFilePrinter.render() = when (this) { is GradlePrinter -> { irsOfTypeOrNull()?.let { imports -> @@ -44,13 +51,7 @@ data class BuildFileIR( sectionCall("plugins", irsOfType()); nlIndented() pom.render(this); nl() - irsOfType() - .distinctBy { it.repository } - .sortedBy { repositoryIR -> - if (repositoryIR.repository is DefaultRepository) 0 else 1 - }.let { - sectionCall("repositories", it) - } + sectionCall("repositories", distinctRepositories()) nl() modules.render(this) irsOfTypeOrNull()?.let { freeIrs -> @@ -71,6 +72,13 @@ data class BuildFileIR( singleLineNode("kotlin.code.style") { +"official" } } + distinctRepositories().takeIf { it.isNotEmpty() }?.let { repositories -> + nl() + node("repositories") { + repositories.listNl() + } + } + val plugins = irsOfType().takeIf { it.isNotEmpty() } if (plugins != null) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/RepositoryIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/RepositoryIR.kt index ddb501e5218..49d6cccb819 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/RepositoryIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/RepositoryIR.kt @@ -2,6 +2,7 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter +import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.CustomMavenRepository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository @@ -10,7 +11,7 @@ data class RepositoryIR(val repository: Repository) : BuildSystemIR { override fun BuildFilePrinter.render() = when (this) { is GradlePrinter -> when (repository) { is DefaultRepository -> { - +repository.type.asGradleName() + +repository.type.gradleName +"()" } is CustomMavenRepository -> { @@ -26,15 +27,12 @@ data class RepositoryIR(val repository: Repository) : BuildSystemIR { } else -> Unit } + is MavenPrinter -> { + node("repository") { + singleLineNode("id") { +repository.idForMaven } + singleLineNode("url") { +repository.url } + } + } else -> Unit } - - companion object { - private fun DefaultRepository.Type.asGradleName() = when (this) { - DefaultRepository.Type.JCENTER -> "jcenter" - DefaultRepository.Type.MAVEN_CENTRAL -> "mavenCentral" - DefaultRepository.Type.GOOGLE -> "google" - DefaultRepository.Type.GRADLE_PLUGIN_PORTAL -> "gradlePluginPortal" - } - } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt index 973cc3209c2..adbc63afe07 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt @@ -1,10 +1,22 @@ package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem -interface Repository +interface Repository { + val url: String + val idForMaven: String +} data class DefaultRepository(val type: Type) : Repository { - enum class Type { - JCENTER, MAVEN_CENTRAL, GOOGLE, GRADLE_PLUGIN_PORTAL + override val url: String + get() = type.url + + override val idForMaven: String + get() = type.gradleName + + enum class Type(val gradleName: String, val url: String) { + JCENTER("jcenter", "https://jcenter.bintray.com/"), + MAVEN_CENTRAL("mavenCentral", "https://repo1.maven.org/maven2/"), + GOOGLE("google", "https://dl.google.com/dl/android/maven2/"), + GRADLE_PLUGIN_PORTAL("gradlePluginPortal", "https://plugins.gradle.org/m2/") } companion object { @@ -16,12 +28,13 @@ data class DefaultRepository(val type: Type) : Repository { } -interface CustomMavenRepository : Repository { - val url: String -} +interface CustomMavenRepository : Repository data class BintrayRepository(val repository: String) : CustomMavenRepository { override val url: String = "https://dl.bintray.com/$repository" + + override val idForMaven: String + get() = "bintray." + repository.replace('/', '.') } object Repositories {