Wizard: add validation for project name
This commit is contained in:
+14
@@ -18,6 +18,8 @@ import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Failure
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Success
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.isSuccess
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.onFailure
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
@@ -50,6 +52,8 @@ class NewProjectWizardModuleBuilder : EmptyModuleBuilder() {
|
||||
companion object {
|
||||
const val MODULE_BUILDER_ID = "kotlin.newProjectWizard.builder"
|
||||
private const val DEFAULT_GROUP_ID = "me.user"
|
||||
private val projectNameValidator = StringValidators.shouldBeValidIdentifier("Project name", setOf('-', '_'))
|
||||
private const val INVALID_PROJECT_NAME_MESSAGE = "Invalid project name"
|
||||
}
|
||||
|
||||
override fun isAvailable(): Boolean = NewProjectWizardService.isEnabled
|
||||
@@ -106,6 +110,16 @@ class NewProjectWizardModuleBuilder : EmptyModuleBuilder() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun validateModuleName(moduleName: String): Boolean {
|
||||
when (val validationResult = projectNameValidator.validate(wizard.valuesReadingContext, moduleName)) {
|
||||
ValidationResult.OK -> return true
|
||||
is ValidationResult.ValidationError -> {
|
||||
val message = validationResult.messages.firstOrNull() ?: INVALID_PROJECT_NAME_MESSAGE
|
||||
throw ConfigurationException(message, INVALID_PROJECT_NAME_MESSAGE)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateProjectNameAndPomDate(settingsStep: SettingsStep) {
|
||||
if (wizard.artifactId != null || wizard.groupId != null) return
|
||||
val suggestedProjectName = with(wizard.valuesReadingContext) {
|
||||
|
||||
Reference in New Issue
Block a user