Packages

  • package root
    Definition Classes
    root
  • package args4c

    Args4c (arguments for configuration) is intended to add some helpers and utilities in obtaining a typesafe configuration from user arguments.

    Args4c (arguments for configuration) is intended to add some helpers and utilities in obtaining a typesafe configuration from user arguments.

    The core is simply to convert an Array[String] to a Config where the arguments are either paths to configuration resources or simple key=value pairs via args4c.configForArgs

    Left-most arguments take precedence. In this example, we assume 'prod.conf' is a resource on the classpath:

    MyApp foo.x=bar foo.x=ignored /opt/etc/overrides.conf prod.conf

    In addition to this core concept, this library also provides some additional configuration utilities via args4c.RichConfigOps which can be made available by extending args4c.LowPriorityArgs4cImplicits or importing args4c.implicits:

    import args4c.implicits._
    object MyApp {
       override def main(args : Array[String]) : Unit = {
         val config = args.asConfig()
         println("Starting MyApp with config:")
    
         // let's "log" our app's config on startup:
         val flatSummary : String = config.filter(_.startsWith("myapp")).summary()
         println(flatSummary) // "logging" our config
       }
    }

    Where the 'summary' will produce sorted args4c.StringEntry values with potentially sensitive entries (e.g. passwords) obscured and a source comment for some sanity as to where each entry comes from:

    myapp.foo : bar # command-line
    myapp.password : **** obscured **** # command-line
    myapp.saveTo : afile # file:/opt/etc/myapp/test.conf@3

    Also, when extracting user arguments into a configuration, an additional 'fallback' config is specified. Typically this would just be the ConfigFactory.load() configuration, but args4c uses the args4c.defaultConfig, which is essentially just the system environment variables converted from snake-caes to dotted lowercase values first, then falling back on ConfigFactory.load().

    Applications can elect to not have this behaviour and provide their own fallback configs when parsing args, but the default provides a convenience for system environment variables to override e.g. 'foo.bar.x=default' by specifying

    FOO_BAR_X=override

    as a system environment variable. Otherwise you may end up having to repeat this sort of thing all over you config:

    foo.bar=default
    foo.bar=$${?FOO_BAR}
    
    foo.bazz=default2
    foo.bazz=$${?FOO_BAZZ}
    
    ...

    Finally, args4c also provides a args4c.ConfigApp which provides some additional functionality to configuration-based applications.

    Definition Classes
    root
  • ConfigApp
  • Encryption
  • LowPriorityArgs4cImplicits
  • PasswordPrompt
  • Prompt
  • PromptForConfigFilePermissions
  • PromptForExistingPassword
  • PromptForPassword
  • PromptForUpdatedPassword
  • ReadNextKeyValuePair
  • ReadNextKeyValuePairAfterError
  • RichConfig
  • RichConfigOps
  • SaveSecretPrompt
  • SecureConfig
  • Selected
  • StringEntry
  • implicits

class RichConfig extends RichConfigOps

Adds some scala utility around a typesafe config

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. RichConfig
  2. RichConfigOps
  3. LowPriorityArgs4cImplicits
  4. Dynamic
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new RichConfig(config: Config)

Type Members

  1. implicit class RichArgs extends AnyRef
    Definition Classes
    LowPriorityArgs4cImplicits
  2. implicit class RichString extends AnyRef
    Definition Classes
    LowPriorityArgs4cImplicits

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def asDuration(key: String): Duration

    key

    the configuration path

    returns

    the value at the given key as a scala duration

    Definition Classes
    RichConfigOps
  5. def asFiniteDuration(key: String): FiniteDuration
    Definition Classes
    RichConfigOps
  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. def asJson: String

    returns

    the configuration as a json string

    Definition Classes
    RichConfigOps
  8. def asList(path: String, separator: Option[String] = Option(",")): List[String]

    produces a scala list, either from a StringList or a comma-separated string value

    produces a scala list, either from a StringList or a comma-separated string value

    path

    the config path

    separator

    if specified, the value at the given path will be parsed if it is a string and not a stringlist

    Definition Classes
    RichConfigOps
  9. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  10. def collectAsMap(options: ConfigRenderOptions = defaultRenderOptions): Map[String, String]

    returns

    the configuration as a map

    Definition Classes
    RichConfigOps
  11. def collectAsStrings(options: ConfigRenderOptions = defaultRenderOptions): Seq[(String, String)]

    returns

    the configuration as a set of key/value tuples

    Definition Classes
    RichConfigOps
  12. val config: Config

    returns

    the configuration for which we're providing additional functionality

    Definition Classes
    RichConfigRichConfigOps
  13. implicit def configAsRichConfig(c: Config): RichConfig
    Definition Classes
    LowPriorityArgs4cImplicits
  14. def defaultRenderOptions: ConfigRenderOptions
    Definition Classes
    RichConfigOps
  15. def encrypt(password: Array[Byte]): Array[Byte]

    returns

    the encrypted configuration

    Definition Classes
    RichConfigOps
  16. def entries(arraySyntax: Boolean = true): Set[(String, ConfigValue)]

    arraySyntax

    if true expand arrays with '.[x]' syntax

    returns

    the configuration entries as a set of entries

    Definition Classes
    RichConfigOps
  17. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  19. def filter(pathFilter: (String) => Boolean): Config

    pathFilter

    a predicate used to determine if the configuration path should be kept

    returns

    a new configuration which just keeps the paths which include the provided path predicate

    Definition Classes
    RichConfigOps
  20. def filterNot(pathFilter: (String) => Boolean): Config

    pathFilter

    a predicate used to determine if the configuration path should be kept

    returns

    a new configuration which just keeps the paths which do NOT include the provided path predicate

    Definition Classes
    RichConfigOps
  21. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  22. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  23. def hasValue(path: String): Boolean

    path

    the config path

    returns

    true if the config path is set in this config to a non-empty value. This will error if the path specified is an object or a list

    Definition Classes
    RichConfigOps
  24. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  25. def intersect(other: Config): Config

    returns

    the configuration representing the intersection of the two configuration entries

    Definition Classes
    RichConfigOps
  26. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  27. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  28. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  29. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  30. def origins: List[String]

    returns

    a sorted list of the origins from when the config values come

    Definition Classes
    RichConfigOps
  31. def overrideWith(configString: String): Config

    configString

    the configuration (as a string) which should override this config -- essentially the inverse of 'withFallback'

    returns

    a new configuration based on 'configString' with our config as a fallback

    Definition Classes
    RichConfigOps
  32. def overrideWith(overrideConfig: Config): Config

    overrideConfig

    the configuration (as a string) which should override this config -- essentially the inverse of 'withFallback'

    returns

    a new configuration based on 'configString' with our config as a fallback

    Definition Classes
    RichConfigOps
  33. def pathRoots: Seq[String]

    The available config roots.

    The available config roots.

    e.g. of a config has

    foo.bar.x = 1
    java.home = /etc/java
    bar.enabled = true
    bar.user = root

    The 'pathRoots' would return a [bar, foo, java]

    returns

    a sorted list of the root entries to the config.

    Definition Classes
    RichConfigOps
  34. def paths(arraySyntax: Boolean = true): Seq[String]

    returns

    all the unique paths for this configuration

    Definition Classes
    RichConfigOps
  35. def selectDynamic(path: String): Selected
    Definition Classes
    RichConfigOps
  36. def set(values: Map[String, Any], originDesc: String = "override"): Config
    Definition Classes
    RichConfigOps
  37. def set(key: String, value: Boolean): Config
    Definition Classes
    RichConfigOps
  38. def set(key: String, value: String): Config
    Definition Classes
    RichConfigOps
  39. def set(key: String, value: Long): Config

    key

    the config path

    value

    the value to set

    returns

    a new configuration based on 'configString' with our config as a fallback

    Definition Classes
    RichConfigOps
  40. def setArray[T](key: String, value: Seq[T], originDesc: String = null): Config
    Definition Classes
    RichConfigOps
  41. def setArray[T](key: String, firstValue: T, secondValue: T, theRest: T*): Config
    Definition Classes
    RichConfigOps
  42. def showIfSpecified(obscure: (String, String) => String = obscurePassword(_, _)): Option[String]

    If 'show=X' is specified, configuration values which contain X in their path will be displayed with the values matching 'obscure' obscured.

    If 'show=X' is specified, configuration values which contain X in their path will be displayed with the values matching 'obscure' obscured.

    If 'X' is 'all' or 'root', then the entire configuration is rendered.

    This can be useful to debug other command-line args (to ensure they take the desired effect) or to validate the environment variable replacement

    obscure

    a function which takes a dotted configuration path and string value and returns the value to display

    returns

    the optional value of what's pointed to if 'show=<path>' is specified

    Definition Classes
    RichConfigOps
  43. def summary(obscure: (String, String) => String = obscurePassword(_, _)): String

    Return a property-like summary of the config using the pathFilter to trim property entries

    Return a property-like summary of the config using the pathFilter to trim property entries

    obscure

    a function which will 'safely' replace any config values with an obscured value

    returns

    a summary of the configuration

    Definition Classes
    RichConfigOps
  44. def summaryEntries(obscure: (String, String) => String = obscurePassword(_, _)): Seq[StringEntry]

    Return a property-like summary of the config using the 'obscure' function to mask sensitive entries

    Return a property-like summary of the config using the 'obscure' function to mask sensitive entries

    obscure

    a function which will 'safely' replace any config values with an obscured value

    Definition Classes
    RichConfigOps
  45. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  46. def toMap: Map[String, ConfigValue]

    returns

    the config as a map

    Definition Classes
    RichConfigOps
  47. def toString(): String
    Definition Classes
    AnyRef → Any
  48. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  49. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  50. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  51. def withPaths(paths: Seq[String]): Config

    returns

    this configuration which only contains the specified paths

    Definition Classes
    RichConfigOps
  52. def withPaths(first: String, theRest: String*): Config

    first

    the first path to include (keep)

    theRest

    any other paths to keep

    returns

    this configuration which only contains the specified paths

    Definition Classes
    RichConfigOps
  53. def withUserArgs(args: Array[String], unrecognizedArg: (String) => Config = ParseArg.Throw): Config

    Overlay the given arguments over this configuration, where the arguments are taken to be in the form:

    Overlay the given arguments over this configuration, where the arguments are taken to be in the form:

    $ the path to a configuration file, either on the classpath or file system $ a <key>=<value> pair where the key is a 'path.to.a.configuration.entry'

    args

    the user arguments in the form <key>=<value>, <filePath> or <fileOnTheClasspath>

    unrecognizedArg

    what to do with malformed user input

    returns

    a configuration with the given user-argument overrides applied over top

    Definition Classes
    RichConfigOps
  54. def without(configPaths: TraversableOnce[String]): Config

    configPaths

    the paths to remove

    returns

    a new configuration with the given paths removed

    Definition Classes
    RichConfigOps
  55. def without(firstPath: String, theRest: String*): Config

    firstPath

    the first path to remove

    theRest

    the remaining paths to remove

    returns

    a new configuration with the given paths removed

    Definition Classes
    RichConfigOps
  56. def without(other: Config): Config

    other

    the configuration to remove from this config

    returns

    a new configuration with all values from 'other' removed

    Definition Classes
    RichConfigOps

Inherited from RichConfigOps

Inherited from Dynamic

Inherited from AnyRef

Inherited from Any

Ungrouped