| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Data.Yaml.Config
Contents
Description
Functionality for using YAML as configuration files
In particular, merging environment variables with yaml values
loadYamlSettings is a high-level API for loading YAML and merging environment variables.
A yaml value of _env:ENV_VAR:default will lookup the environment variable ENV_VAR.
On a historical note, this code was taken directly from the yesod web framework's configuration module.
Synopsis
- loadYamlSettings :: FromJSON settings => [FilePath] -> [Value] -> EnvUsage -> IO settings
- loadYamlSettingsArgs :: FromJSON settings => [Value] -> EnvUsage -> IO settings
- data EnvUsage
- ignoreEnv :: EnvUsage
- useEnv :: EnvUsage
- requireEnv :: EnvUsage
- useCustomEnv :: KeyMap Text -> EnvUsage
- requireCustomEnv :: KeyMap Text -> EnvUsage
- applyCurrentEnv :: Bool -> Value -> IO Value
- getCurrentEnv :: IO (KeyMap Text)
- applyEnvValue :: Bool -> KeyMap Text -> Value -> Value
High-level
Arguments
run time config files to use, earlier files have precedence
any other values to use, usually from compile time config. overridden by files
Load the settings from the following three sources:
- Run time config files
- Run time environment variables
- The default compile time config file
For example, to load up settings from config/foo.yaml and allow overriding
from the actual environment, you can use:
loadYamlSettings ["config/foo.yaml"] [] useEnv
Since: 0.8.16
Arguments
any other values to use, usually from compile time config. overridden by files
use environment variables
Same as loadYamlSettings, but get the list of runtime config files from
the command line arguments.
Since: 0.8.17
EnvUsage
Defines how we want to use the environment variables when loading a config file. Use the smart constructors provided by this module.
Since: 0.8.16
ignoreEnv :: EnvUsage Source #
Do not use any environment variables, instead relying on defaults values in the config file.
Since: 0.8.16
Use environment variables when available, otherwise use defaults.
Since: 0.8.16
requireEnv :: EnvUsage Source #
Do not use default values from the config file, but instead take all overrides from the environment. If a value is missing, loading the file will throw an exception.
Since: 0.8.16
useCustomEnv :: KeyMap Text -> EnvUsage Source #
Same as useEnv , but instead of the actual environment, use the provided
HashMap as the environment.
Since: 0.8.16
requireCustomEnv :: KeyMap Text -> EnvUsage Source #
Same as requireEnv , but instead of the actual environment, use the
provided HashMap as the environment.
Since: 0.8.16
Lower level
A convenience wrapper around applyEnvValue and getCurrentEnv
Since: 0.8.16
getCurrentEnv :: IO (KeyMap Text) Source #
Get the actual environment as a HashMap from Text to Text.
Since: 0.8.16
Override environment variable placeholders in the given Value with
values from the environment.
If the first argument is True, then all placeholders _must_ be provided by
the actual environment. Otherwise, default values from the Value will be
used.
Since: 0.8.16