associated-press/app/AppLoader.scala (38 lines of code) (raw):

import com.gu.conf.{ ConfigurationLoader, FileConfigurationLocation, SSMConfigurationLocation } import com.gu.{AppIdentity, AwsIdentity, DevIdentity} import config.AWS.credentials import play.api.ApplicationLoader.Context import play.api._ import java.io.File class AppLoader extends ApplicationLoader { def load(context: Context): Application = { startLogging(context) val defaultAppName = "associated-press-feed" val identity: AppIdentity = AppIdentity .whoAmI(defaultAppName, credentials) .getOrElse(DevIdentity(defaultAppName)) val loadedConfig = ConfigurationLoader.load(identity, credentials) { case identity: AwsIdentity => SSMConfigurationLocation.default(identity) case _: DevIdentity => val home = System.getProperty("user.home") FileConfigurationLocation( new File(s"$home/.gu/$defaultAppName.private.conf") ) } new AppComponents( context = context.copy( initialConfiguration = Configuration(loadedConfig).withFallback(context.initialConfiguration) ) ).application } private def startLogging(context: Context): Unit = { LoggerConfigurator(context.environment.classLoader).foreach { _.configure(context.environment) } } }