From 09b50a209bb3ce752ced37aaa5df95fad80b2265 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Sat, 18 Jan 2020 01:11:32 +0300 Subject: [PATCH] Wizard: do not suggest invalid groupId --- .../wizard/NewProjectWizardModuleBuilder.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt index 0d5fb889ac6..1901c5ab4cc 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt @@ -49,6 +49,7 @@ class NewProjectWizardModuleBuilder : EmptyModuleBuilder() { companion object { const val MODULE_BUILDER_ID = "kotlin.newProjectWizard.builder" + private const val DEFAULT_GROUP_ID = "me.user" } override fun isAvailable(): Boolean = NewProjectWizardService.isEnabled @@ -118,7 +119,14 @@ class NewProjectWizardModuleBuilder : EmptyModuleBuilder() { settingsStep.safeAs()?.bindModuleSettings() wizard.artifactId = suggestedProjectName - wizard.groupId = SystemProperties.getUserName()?.let { "me.$it" } ?: suggestedProjectName + wizard.groupId = suggestGroupId() + } + + private fun suggestGroupId(): String { + val username = SystemProperties.getUserName() ?: return DEFAULT_GROUP_ID + if (!username.matches("[\\w\\s]+".toRegex())) return DEFAULT_GROUP_ID + val usernameAsGroupId = username.trim().toLowerCase().split("\\s+".toRegex()).joinToString(separator = ".") + return "me.$usernameAsGroupId" } override fun getCustomOptionsStep(context: WizardContext?, parentDisposable: Disposable?) =