This library abstracts reading configuration files so that there is a single interface for reading but multiple backwards to pull values from. Current supported backends are
- envProvider: EnvProvider which reads from environment variables and .env files
- jsonProvider: JsonProvider which reads from a JSON file
- TomlProvider which reads from a TOML file
Example:
import scrolls import std/[envvars, json, options] # Usually you'd set environment variables before you start the program... putenv("ENV_EXAMPLE", "true") # You'll need to make a reader with all the providers you want. # These providers are read in order let reader = initConfigurationReader( newEnvProvider(), # We want environment variables to have highest priority newJsonProvider( %*{ # We use hard coded values, but could use a JSON config file "json": {"example": "hello"} } ), ) assert reader.get("env.example", bool).get() # It can parse types assert reader.get("json.example", string).get() == "hello" # Handles fall through assert reader.get("doesnt.exist", string).isNone()
Exports
-
value, $, ConfigurationProvider, value, newEnvProvider, ConfigValueKind, InvalidConfigValue, convertKey, EnvProvider, ConfigValue, $, value, newJsonProvider, ConfigurationProvider, value, newJsonProvider, newJsonProvider, ConfigValue, JsonProvider, InvalidConfigValue, ConfigValueKind, $, newTomlProvider, ConfigurationProvider, value, newTomlProvider, newTomlProvider, TomlProvider, ConfigValue, value, InvalidConfigValue, ConfigValueKind, initConfigurationReader, get, get, get, get, Serialisable, get, get, get, get, ConfigurationReader, get, get, getConfigFile, getConfigFile