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

izumi.fundamentals.platform.properties.DebugProperties.scala Maven / Gradle / Ivy

package izumi.fundamentals.platform.properties

import izumi.fundamentals.platform.strings.IzString._

/**
  * Marker trait for objects that hold names of Java Properties
  * that control debug output for macros and internals of `izumi` libraries.
  *
  * Search for inheritors of this trait to discover debugging java properties
  *
  * For example, to see macro debug output during compilation, set `-Dizumi.debug.macro.rtti=true` java property
  *
  * {{{
  *  sbt -Dizumi.debug.macro.rtti=true compile
  * }}}
  */
trait DebugProperties {
  @inline protected final def BoolProperty(name: String): BooleanProperty = new BooleanProperty(name)

  @inline protected final def StrProperty(name: String): StrProperty = new StrProperty(name)
}

final case class BooleanProperty(name: String) extends AnyVal {
  def boolValue(default: Boolean): Boolean = {
    System.getProperty(name).asBoolean().getOrElse(default)
  }
}

final case class StrProperty(name: String) extends AnyVal {
  def strValue(default: String): String = {
    val str = System.getProperty(name)
    if (str ne null) str else default
  }

  def strValue(): Option[String] = {
    Option(System.getProperty(name))
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy