def resolve()

in magenta-lib/src/main/scala/magenta/input/resolver/TaskResolver.scala [19:57]


  def resolve(
      deployment: Deployment,
      deploymentResources: DeploymentResources,
      parameters: DeployParameters,
      deploymentTypes: Seq[DeploymentType],
      artifact: S3Artifact
  ): Validated[ConfigErrors, DeploymentTasks] = {
    val validatedDeploymentType = Validated.fromOption(
      deploymentTypes.find(_.name == deployment.`type`),
      ConfigErrors(
        deployment.name,
        s"Deployment type ${deployment.`type`} not found"
      )
    )

    validatedDeploymentType.map { deploymentType =>
      val deploymentPackage =
        createDeploymentPackage(deployment, artifact, deploymentTypes)
      val tasks = for {
        region <- deployment.regions.toList
        stack <- deployment.stacks.toList
        actionName <- deployment.actions.toList
        deploymentStep = deploymentType.mkDeploymentStep(actionName)(
          deploymentPackage
        )
        target = DeployTarget(parameters, Stack(stack), Region(region))
        task <- deploymentStep.resolve(deploymentResources, target)
      } yield task
      DeploymentTasks(
        tasks,
        mkLabel(
          deploymentPackage.name,
          deployment.actions,
          deployment.regions,
          deployment.stacks
        )
      )
    }
  }