app/conf/FileConfiguration.scala (30 lines of code) (raw):
package conf
import java.io.File
import com.typesafe.config.ConfigFactory
import play.api.Configuration
import play.api.Mode
case class FileConfiguration(
identity: Identity,
classPathPrefix: String = "env/"
) extends ConfigurationSource {
def configuration(mode: Mode): Configuration = {
val globalConfig = Configuration(
ConfigFactory.parseResourcesAnySyntax(s"${classPathPrefix}global.conf")
)
if (mode == Mode.Test) globalConfig
else {
val stageConfig = Configuration(
ConfigFactory.parseResourcesAnySyntax(
s"$classPathPrefix${identity.stage}.conf"
)
)
val home = System.getProperty("user.home")
val developerConfig = Configuration(
ConfigFactory.parseFileAnySyntax(
new File(s"$home/.gu/${identity.stack}-${identity.app}.conf")
)
)
developerConfig.withFallback(stageConfig).withFallback(globalConfig)
}
}
}