yaml-0.11.5.0: Support for parsing and rendering YAML documents.

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

# High-level

Arguments

 :: FromJSON settings => [FilePath] run time config files to use, earlier files have precedence -> [Value] any other values to use, usually from compile time config. overridden by files -> EnvUsage -> IO settings

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

 :: FromJSON settings => [Value] any other values to use, usually from compile time config. overridden by files -> EnvUsage use environment variables -> IO settings

Same as loadYamlSettings, but get the list of runtime config files from the command line arguments.

Since: 0.8.17

## EnvUsage

data EnvUsage Source #

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

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

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

Same as useEnv, but instead of the actual environment, use the provided HashMap as the environment.

Since: 0.8.16

Same as requireEnv, but instead of the actual environment, use the provided HashMap as the environment.

Since: 0.8.16

# Lower level

Arguments

 :: Bool require an environment variable to be present? -> Value -> IO Value

A convenience wrapper around applyEnvValue and getCurrentEnv

Since: 0.8.16

Get the actual environment as a HashMap from Text to Text.

Since: 0.8.16

Arguments

 :: Bool require an environment variable to be present? -> HashMap Text Text -> Value -> Value

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