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)
}
}