in jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/actions/DeployServerlessApplicationAction.kt [66:126]
override fun actionPerformed(e: AnActionEvent) {
val project = e.getRequiredData(PlatformDataKeys.PROJECT)
if (!AwsConnectionManager.getInstance(project).isValidConnectionSettings()) {
notifyNoActiveCredentialsError(project = project)
return
}
ExecutableManager.getInstance().getExecutable<SamExecutable>().thenAccept { samExecutable ->
if (samExecutable is ExecutableInstance.InvalidExecutable || samExecutable is ExecutableInstance.UnresolvedExecutable) {
notifySamCliNotValidError(
project = project,
content = (samExecutable as ExecutableInstance.BadExecutable).validationError
)
return@thenAccept
}
val templateFile = if (e.place == ExplorerToolWindow.explorerToolWindowPlace) {
runBlocking(edtContext) {
FileChooser.chooseFile(
FileChooserDescriptorFactory.createSingleFileDescriptor(YAMLFileType.YML),
project,
project.guessProjectDir()
)
} ?: return@thenAccept
} else {
val file = getSamTemplateFile(e)
if (file == null) {
Exception(message("serverless.application.deploy.toast.template_file_failure"))
.notifyError(message("aws.notification.title"), project)
return@thenAccept
}
file
}
validateTemplateFile(project, templateFile)?.let {
notifyError(content = it, project = project)
return@thenAccept
}
runInEdt {
// Force save before we deploy
FileDocumentManager.getInstance().saveAllDocuments()
val stackDialog = DeployServerlessApplicationDialog(project, templateFile)
if (!stackDialog.showAndGet()) {
SamTelemetry.deploy(
project = project,
version = SamCommon.getVersionString(),
result = Result.Cancelled
)
return@runInEdt
}
val settings = stackDialog.settings()
saveSettings(project, templateFile, settings)
continueDeployment(project, templateFile, settings)
}
}
}