def main()

in src/main/scala/com/gu/ssm/Interactive.scala [18:37]


  def main(profile: Option[String], region: Region, executionTarget: ExecutionTarget): Unit = {
    // start UI on a new thread (it blocks while it listens for keyboard input)
    Future {
      ui.start()
    }
    val configAttempt = for {
      config <- IO.getSSMConfig(awsClients.ec2Client, awsClients.stsClient, executionTarget)
      _ <- Attempt.fromEither(Logic.checkInstancesList(config))
    } yield config

    configAttempt.onComplete {
      case Right(SSMConfig(targets, name)) => {
        val incorrectInstancesFromInstancesTag = Logic.computeIncorrectInstances(executionTarget, targets.map(i => i.id))
        ui.ready(targets.map(i => i.id), name, incorrectInstancesFromInstancesTag)
      }
      case Left(failedAttempt) =>
        ui.displayError(failedAttempt)
        ui.ready(List(), "", Nil)
    }
  }