Wizard: minor, move out module validators from Module class
This commit is contained in:
+43
-31
@@ -40,37 +40,10 @@ class Module(
|
|||||||
val kind: ModuleKind
|
val kind: ModuleKind
|
||||||
get() = configurator.moduleKind
|
get() = configurator.moduleKind
|
||||||
|
|
||||||
override val validator: SettingValidator<Module> = settingValidator<Module> { module ->
|
override val validator = moduleNameValidator and
|
||||||
StringValidators.shouldNotBeBlank("Module name").validate(this, module.name)
|
moduleConfiguratorValidator and
|
||||||
} and settingValidator { module ->
|
moduleTemplateValidator and
|
||||||
StringValidators.shouldBeValidIdentifier("Module name `$name`", ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES).validate(this, module.name)
|
subModulesValidator
|
||||||
} and settingValidator { module ->
|
|
||||||
withSettingsOf(module) {
|
|
||||||
allSettingsOfModuleConfigurator(configurator).map { setting ->
|
|
||||||
val reference = when (setting) {
|
|
||||||
is PluginSetting<Any, SettingType<Any>> -> setting.reference
|
|
||||||
is ModuleConfiguratorSetting<Any, SettingType<Any>> -> setting.reference
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
val value = reference?.notRequiredSettingValue
|
|
||||||
?: reference?.savedOrDefaultValue
|
|
||||||
?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank")
|
|
||||||
(setting.validator as SettingValidator<Any>).validate(this@settingValidator, value)
|
|
||||||
}.fold()
|
|
||||||
}
|
|
||||||
} and settingValidator { module ->
|
|
||||||
val template = module.template ?: return@settingValidator ValidationResult.OK
|
|
||||||
org.jetbrains.kotlin.tools.projectWizard.templates.withSettingsOf(module) {
|
|
||||||
template.settings.map { setting ->
|
|
||||||
val value = setting.reference.notRequiredSettingValue
|
|
||||||
?: setting.reference.savedOrDefaultValue
|
|
||||||
?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank")
|
|
||||||
(setting.validator as SettingValidator<Any>).validate(this@settingValidator, value)
|
|
||||||
}.fold()
|
|
||||||
}
|
|
||||||
} and inValidatorContext { module ->
|
|
||||||
validateList(module.subModules)
|
|
||||||
}
|
|
||||||
|
|
||||||
var subModules = subModules
|
var subModules = subModules
|
||||||
set(value) {
|
set(value) {
|
||||||
@@ -115,6 +88,45 @@ class Module(
|
|||||||
val (submodules) = map.parseValue(this, path, "subModules", listParser(Module.parser)) { emptyList() }
|
val (submodules) = map.parseValue(this, path, "subModules", listParser(Module.parser)) { emptyList() }
|
||||||
Module(name, configurator, template, sourcesets, submodules, identificator = identificator)
|
Module(name, configurator, template, sourcesets, submodules, identificator = identificator)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val moduleNameValidator = settingValidator<Module> { module ->
|
||||||
|
StringValidators.shouldNotBeBlank("Module name").validate(this, module.name)
|
||||||
|
} and settingValidator { module ->
|
||||||
|
StringValidators.shouldBeValidIdentifier("Module name `${module.name}`", ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES)
|
||||||
|
.validate(this, module.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
val moduleConfiguratorValidator = settingValidator<Module> { module ->
|
||||||
|
withSettingsOf(module) {
|
||||||
|
allSettingsOfModuleConfigurator(module.configurator).map { setting ->
|
||||||
|
val reference = when (setting) {
|
||||||
|
is PluginSetting<Any, SettingType<Any>> -> setting.reference
|
||||||
|
is ModuleConfiguratorSetting<Any, SettingType<Any>> -> setting.reference
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
val value = reference?.notRequiredSettingValue
|
||||||
|
?: reference?.savedOrDefaultValue
|
||||||
|
?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank")
|
||||||
|
(setting.validator as SettingValidator<Any>).validate(this@settingValidator, value)
|
||||||
|
}.fold()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val moduleTemplateValidator = settingValidator<Module> { module ->
|
||||||
|
val template = module.template ?: return@settingValidator ValidationResult.OK
|
||||||
|
org.jetbrains.kotlin.tools.projectWizard.templates.withSettingsOf(module) {
|
||||||
|
template.settings.map { setting ->
|
||||||
|
val value = setting.reference.notRequiredSettingValue
|
||||||
|
?: setting.reference.savedOrDefaultValue
|
||||||
|
?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank")
|
||||||
|
(setting.validator as SettingValidator<Any>).validate(this@settingValidator, value)
|
||||||
|
}.fold()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val subModulesValidator = inValidatorContext<Module> { module ->
|
||||||
|
validateList(module.subModules)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user