aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/com/drivergrp/core/config.scala
blob: 5a8975252ab6277ffcf7c7497bedf04580b1d77a (plain) (tree)










































                                                                                       
package com.drivergrp.core

import java.io.File
import com.typesafe.config.{Config, ConfigFactory}


object config {

  trait ConfigModule {
    def config: Config
  }

  /**
    * Configuration implementation providing config which is specified as the parameter
    * which might be used for testing purposes
    *
    * @param config fixed config to provide
    */
  class DefaultConfigModule(val config: Config) extends ConfigModule

  /**
    * Configuration implementation reading default typesafe config
    */
  trait TypesafeConfigModule extends ConfigModule {

    private val internalConfig: Config = {
      val configDefaults =
        ConfigFactory.load(this.getClass.getClassLoader, "application.conf")

      scala.sys.props.get("application.config") match {

        case Some(filename) =>
          ConfigFactory.parseFile(new File(filename)).withFallback(configDefaults)

        case None => configDefaults
      }
    }

    protected val rootConfig = internalConfig

    val config = rootConfig
  }
}