app/AppLoader.scala (40 lines of code) (raw):

import com.amazonaws.regions.Regions import conf._ import play.api.{Configuration, _} import utils.{AWSCredentialProviders, Logging} class AppLoader extends ApplicationLoader with Logging { def load(context: ApplicationLoader.Context): Application = { LoggerConfigurator(context.environment.classLoader).foreach { _.configure(context.environment) } val identity: Identity = { context.environment.mode match { case Mode.Prod => AWS.instance.identity case _ => None } }.getOrElse(Identity("deploy", "prism", "DEV")) log.info(s"Getting config for $identity") val extraConfigs = List( DynamoConfiguration( AWSCredentialProviders.deployToolsCredentialsProviderChainV1, Regions.EU_WEST_1, identity ), FileConfiguration(identity) ) val extraConfig: Configuration = extraConfigs.foldRight( Configuration.empty )(_.configuration(context.environment.mode).withFallback(_)) log.info(s"Loaded config $extraConfig") val combinedConfig: Configuration = extraConfig.withFallback(context.initialConfiguration) val contextWithConfig = context.copy(initialConfiguration = combinedConfig) try { new AppComponents(contextWithConfig).application } catch { case t: Throwable => log.error("Unable to initialise prism", t) throw t } } }