headroom-0.1.0.0: License Header Manager
Copyright(c) 2019-2020 Vaclav Svejcar
LicenseBSD-3
Maintainervaclav.svejcar@gmail.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Headroom.AppConfig

Description

This module adds support for loading and parsing application configuration. Such configuration can be loaded either from YAML config file, or from command line arguments. Provided Semigroup and Monoid instances allows to merge multiple loaded configurations into one.

Synopsis

Documentation

data AppConfig Source #

Application configuration, loaded either from configuration file or command line options.

Constructors

AppConfig 

Fields

Instances

Instances details
Eq AppConfig Source # 
Instance details

Defined in Headroom.AppConfig

Show AppConfig Source # 
Instance details

Defined in Headroom.AppConfig

Generic AppConfig Source # 
Instance details

Defined in Headroom.AppConfig

Associated Types

type Rep AppConfig :: Type -> Type #

Semigroup AppConfig Source # 
Instance details

Defined in Headroom.AppConfig

Monoid AppConfig Source # 
Instance details

Defined in Headroom.AppConfig

FromJSON AppConfig Source #

Support for reading configuration from YAML.

Instance details

Defined in Headroom.AppConfig

Methods

parseJSON :: Value -> Parser AppConfig

parseJSONList :: Value -> Parser [AppConfig]

type Rep AppConfig Source # 
Instance details

Defined in Headroom.AppConfig

type Rep AppConfig = D1 ('MetaData "AppConfig" "Headroom.AppConfig" "headroom-0.1.0.0-inplace" 'False) (C1 ('MetaCons "AppConfig" 'PrefixI 'True) ((S1 ('MetaSel ('Just "acRunMode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RunMode) :*: S1 ('MetaSel ('Just "acSourcePaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])) :*: (S1 ('MetaSel ('Just "acTemplatePaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "acVariables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HashMap Text Text)))))

loadAppConfig Source #

Arguments

:: MonadIO m 
=> FilePath

path to configuration file

-> m AppConfig

parsed configuration

Loads and parses application configuration from given file.

makePathsRelativeTo Source #

Arguments

:: FilePath

file path to use

-> AppConfig

input application configuration

-> AppConfig

result with relativized file paths

Rewrites all file paths in AppConfig to be relative to given file path.

parseAppConfig Source #

Arguments

:: MonadThrow m 
=> ByteString

raw input to parse

-> m AppConfig

parsed application configuration

Parses application configuration from given raw input.

parseVariables Source #

Arguments

:: MonadThrow m 
=> [Text]

list of raw variables

-> m (HashMap Text Text)

parsed variables

Parses variables from raw input in key=value format.

>>> parseVariables ["key1=value1"]
fromList [("key1","value1")]

validateAppConfig Source #

Arguments

:: MonadThrow m 
=> AppConfig

application config to validate

-> m AppConfig

validated application config (or errors)

Validates whether given AppConfig contains valid data.