private[input] def resolveDeploymentActions()

in magenta-lib/src/main/scala/magenta/input/resolver/DeploymentTypeResolver.scala [30:74]


  private[input] def resolveDeploymentActions(
      deployment: PartiallyResolvedDeployment,
      deploymentType: DeploymentType
  ): Validated[ConfigErrors, Deployment] = {
    val actions = deployment.actions.orElse(
      NonEmptyList.fromList(deploymentType.defaultActionNames)
    )
    val invalidActions = actions.flatMap(as =>
      NonEmptyList.fromList(
        as.filter(!deploymentType.actionsMap.isDefinedAt(_))
      )
    )

    invalidActions
      .map(invalids =>
        Invalid(
          ConfigErrors(
            deployment.name,
            s"Invalid action ${invalids.toList.mkString(", ")} for type ${deployment.`type`}"
          )
        )
      )
      .getOrElse {
        Validated.fromOption(
          actions.map(as =>
            Deployment(
              name = deployment.name,
              `type` = deployment.`type`,
              stacks = deployment.stacks,
              regions = deployment.regions,
              allowedStages = deployment.allowedStages,
              actions = as,
              app = deployment.app,
              contentDirectory = deployment.contentDirectory,
              dependencies = deployment.dependencies,
              parameters = deployment.parameters
            )
          ),
          ConfigErrors(
            deployment.name,
            s"Either specify at least one action or omit the actions parameter"
          )
        )
      }
  }