in jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SamInitSelectionPanel.kt [183:216]
fun validate(): ValidationInfo? {
val samExecutable = ExecutableManager.getInstance().getExecutableIfPresent(getExecutable(SamExecutable::class.java))
if (samExecutable is BadExecutable) {
return ValidationInfo(samExecutable.validationError, samExecutableField)
}
val samVersion = SemVer.parseFromText(samExecutable.version)
?: throw IllegalStateException("SemVer is invalid even with valid SAM executable")
if (packageType() == PackageType.IMAGE && samVersion < SamCommon.minImageVersion) {
return ValidationInfo(message("lambda.image.sam_version_too_low", samVersion, SamCommon.minImageVersion))
}
val selectedRuntime = runtimes.selected ?: return templateComboBox.validationInfo(message("sam.init.error.no.runtime.selected"))
val minRuntimeSamVersion = selectedRuntime.minSamInitVersion()
if (samVersion < minRuntimeSamVersion) {
return ValidationInfo(message("sam.executable.minimum_too_low_runtime", selectedRuntime, minRuntimeSamVersion), runtimeComboBox)
}
val selectedArchitecture = architectures.selected ?: return templateComboBox.validationInfo(message("sam.init.error.no.architecture.selected"))
val minArchitectureSamVersion = selectedArchitecture.minSamVersion()
if (samVersion < minArchitectureSamVersion) {
return ValidationInfo(message("sam.executable.minimum_too_low_architecture", selectedArchitecture, minArchitectureSamVersion), runtimeComboBox)
}
val samProjectTemplate = templateComboBox.selectedItem as? SamProjectTemplate
?: return templateComboBox.validationInfo(message("sam.init.error.no.template.selected"))
return wizardFragments.keys
.filter { it.isApplicable(samProjectTemplate) }
.mapNotNull { it.validateFragment() }
.firstOrNull()
}