Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Synopsis
- class ConfigSource s where
- type SourceState s
- fetchValue :: Key -> s -> StateT (SourceState s) IO (Either ConfigError (Value, Text))
- leftovers :: s -> StateT (SourceState s) IO (Maybe [Key])
- data SomeSource = forall source.ConfigSource source => SomeSource (source, SourceState source)
Documentation
class ConfigSource s where Source #
An abstraction over "config sources". This might mean file formats, environment variables, or any other kind of format that can be seen as a key-value store.
type SourceState s Source #
Some sources require state, e.g. to keep track of which values were already read.
fetchValue :: Key -> s -> StateT (SourceState s) IO (Either ConfigError (Value, Text)) Source #
read a single value from the source.
leftovers :: s -> StateT (SourceState s) IO (Maybe [Key]) Source #
given s
, determine if any keys are "left over" and were not used.
This is used to produce warnings for unknown configuration options;
since not all sources can support this, this function's return type
includes Maybe
and sources are free to return Nothing
if they
cannot determine if any unknown keys are present.
Instances
ConfigSource JsonSource Source # | |
Defined in Conftrack.Source.Aeson type SourceState JsonSource Source # fetchValue :: Key -> JsonSource -> StateT (SourceState JsonSource) IO (Either ConfigError (Value, Text)) Source # leftovers :: JsonSource -> StateT (SourceState JsonSource) IO (Maybe [Key]) Source # | |
ConfigSource EnvSource Source # | |
Defined in Conftrack.Source.Env type SourceState EnvSource Source # | |
ConfigSource Trivial Source # | |
Defined in Conftrack.Source.Trivial type SourceState Trivial Source # | |
ConfigSource YamlSource Source # | |
Defined in Conftrack.Source.Yaml type SourceState YamlSource Source # fetchValue :: Key -> YamlSource -> StateT (SourceState YamlSource) IO (Either ConfigError (Value, Text)) Source # leftovers :: YamlSource -> StateT (SourceState YamlSource) IO (Maybe [Key]) Source # |
data SomeSource Source #
An opaque type for any kind of config sources. Values of this type can be
acquired from they Conftrack.Source.*
modules, or by implementing the
ConfigSource
type class.
forall source.ConfigSource source => SomeSource (source, SourceState source) |