Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Config
- class IConfig config where
- data Value a
- getConfigValue :: (IConfig config, MonadThrow m, FromJSON result) => [Text] -> config -> m result
- getConfigValueWith :: (IConfig config, MonadThrow m) => (Value -> Parser result) -> [Text] -> config -> m result
- getSelectedConfigSource :: (IConfig config, MonadThrow m) => [Text] -> config -> m ConfigSource
- getAllConfigSources :: (IConfig config, MonadThrow m) => [Text] -> config -> m (Set ConfigSource)
- data ConfigSource
- data ConfigValue
- data ConfigSpec cmd
- data ConfigurationError
- parseConfigSpec :: MonadThrow m => Text -> m (ConfigSpec ())
- readConfigSpec :: Text -> IO (ConfigSpec ())
- resolveDefault :: ConfigSpec cmd -> Config
- resolveFiles :: ConfigSpec cmd -> IO (Config, Vector SomeException)
- resolveEnvPure :: ConfigSpec cmd -> [(Text, Text)] -> Config
- resolveEnv :: ConfigSpec cmd -> IO Config
Config
Use this functions to fetch values from the Etc.Config and cast them to types that make sense in your program
class IConfig config where Source #
:: (MonadThrow m, FromJSON result) | |
=> [Text] | Key to fetch from config map |
-> config | Config record |
-> m result |
Fetches a configuration value from a given key, if key
is not found, you may pick the failure mode via the MonadThrow
interface.
example:
>>>
getConfigValue ["db", "user"] config :: Maybe Text
Just "root">>>
getConfigValue ["db", "password"] config :: Maybe Text
Nothing
:: MonadThrow m | |
=> (Value -> Parser result) | JSON Parser function |
-> [Text] | Key to fetch from config map |
-> config | Config record |
-> m result |
Fetches a configuration value from a given key, normally this key will
point to a sub-config JSON object, which is then passed to the given JSON
parser function. If key is not found, you may pick the failure mode via the
MonadThrow
interface.
example:
>>>
import qualified Data.Aeson as JSON
>>>
import qualified Data.Aeson.Types as JSON (Parser)
>>>
connectInfoParser :: JSON.Value -> JSON.Parser DbConnectInfo
>>>
getConfigValueWith connectInfoParser ["db"] config
Just (DbConnectInfo {...})
getAllConfigSources :: MonadThrow m => [Text] -> config -> m (Set ConfigSource) Source #
getSelectedConfigSource :: MonadThrow m => [Text] -> config -> m ConfigSource Source #
:: (IConfig config, MonadThrow m, FromJSON result) | |
=> [Text] | Key to fetch from config map |
-> config | Config record |
-> m result |
Fetches a configuration value from a given key, if key
is not found, you may pick the failure mode via the MonadThrow
interface.
example:
>>>
getConfigValue ["db", "user"] config :: Maybe Text
Just "root">>>
getConfigValue ["db", "password"] config :: Maybe Text
Nothing
:: (IConfig config, MonadThrow m) | |
=> (Value -> Parser result) | JSON Parser function |
-> [Text] | Key to fetch from config map |
-> config | Config record |
-> m result |
Fetches a configuration value from a given key, normally this key will
point to a sub-config JSON object, which is then passed to the given JSON
parser function. If key is not found, you may pick the failure mode via the
MonadThrow
interface.
example:
>>>
import qualified Data.Aeson as JSON
>>>
import qualified Data.Aeson.Types as JSON (Parser)
>>>
connectInfoParser :: JSON.Value -> JSON.Parser DbConnectInfo
>>>
getConfigValueWith connectInfoParser ["db"] config
Just (DbConnectInfo {...})
getSelectedConfigSource :: (IConfig config, MonadThrow m) => [Text] -> config -> m ConfigSource Source #
getAllConfigSources :: (IConfig config, MonadThrow m) => [Text] -> config -> m (Set ConfigSource) Source #
ConfigSpec
Use this functions to read the configuration spec. Remember you can use JSON or YAML(*) filepaths
- The yaml cabal flag must be used to support yaml syntax
data ConfigSource Source #
data ConfigValue Source #
data ConfigSpec cmd Source #
Eq cmd => Eq (ConfigSpec cmd) Source # | |
Show cmd => Show (ConfigSpec cmd) Source # | |
FromJSON cmd => FromJSON (ConfigSpec cmd) Source # | |
data ConfigurationError Source #
:: MonadThrow m | |
=> Text | Text to be parsed |
-> m (ConfigSpec ()) | returns ConfigSpec |
Parses a text input into a ConfigSpec
, input can be JSON or YAML (if cabal
flag is set).
:: Text | Filepath where contents are going to be read from and parsed |
-> IO (ConfigSpec ()) | returns ConfigSpec |
Reads contents of a file and parses into a ConfigSpec
, file contents can be
either JSON or YAML (if cabal flag is set).
Resolvers
Use this functions to gather configuration values from different sources (environment variables, command lines or files). Then compose results together using the mappend function
:: ConfigSpec cmd | ConfigSpec |
-> Config | returns Configuration Map with default values included |
Gathers all default values from the etc/spec
entries inside a ConfigSpec
:: ConfigSpec cmd | Config Spec |
-> IO (Config, Vector SomeException) | Configuration Map with all values from files filled in and a list of warnings |
Gathers configuration values from a list of files specified on the
etc/filepaths
entry of a Config Spec. This will return a Configuration Map
with values from all filepaths merged in, and a list of errors in case there was
an error reading one of the filepaths.
:: ConfigSpec cmd | ConfigSpec |
-> [(Text, Text)] | Environment Variable tuples |
-> Config | returns Configuration Map with Environment Variables values filled in |
Gathers all OS Environment Variable values (env
entries) from the etc/spec
entries inside a ConfigSpec
. This version of the function gathers the input
from a list of tuples rather than the OS.
:: ConfigSpec cmd | Config Spec |
-> IO Config | returns Configuration Map with Environment Variables values filled in |
Gathers all OS Environment Variable values (env
entries) from the etc/spec
entries inside a ConfigSpec
.