All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tscfg.example.scalaUse.scala Maven / Gradle / Ivy

package tscfg.example

import java.io.File

import com.typesafe.config.{ConfigRenderOptions, ConfigFactory}

/*
 * sbt> runMain tscfg.example.scalaUse src/main/tscfg/example/example.conf
 */
object scalaUse {

  def main(args: Array[String]): Unit = {
    val configFilename =
      args.headOption.getOrElse("src/main/tscfg/example/example.conf")
    println(s"Loading $configFilename")
    val configFile = new File(configFilename)

    // usual Typesafe Config mechanism to load the file
    val tsConfig = ConfigFactory.parseFile(configFile).resolve

    // create instance of the tscfg generated main class. This will
    // perform all validations according to required properties and types:
    val cfg = ScalaExampleCfg(tsConfig)

    // access the configuration properties in a type-safe fashion while also
    // enjoying your IDE features for code completion, navigation, etc:
    val path: String        = cfg.endpoint.path
    val url: String         = cfg.endpoint.url
    val serial: Option[Int] = cfg.endpoint.serial
    val port: Int           = cfg.endpoint.interface.port
    val typ: Option[String] = cfg.endpoint.interface.`type`

    println("\n*** tscfg case class structure using pprint: *** ")
    pprint.pprintln(cfg)

    println("\n*** Typesafe rendering of input Config object: *** ")
    val options: ConfigRenderOptions = ConfigRenderOptions.defaults
      .setFormatted(true)
      .setComments(true)
      .setOriginComments(false)
    println("  " + tsConfig.root.render(options).replaceAll("\n", "\n  "))
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy