-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Declarative configuration spec for Haskell projects -- -- Please see README.md @package etc @version 0.2.0.0 module System.Etc.Internal.Spec.Types data ConfigurationError InvalidConfiguration :: Text -> ConfigurationError InvalidConfigKeyPath :: [Text] -> ConfigurationError ConfigurationFileNotFound :: Text -> ConfigurationError data CliOptValueType StringOpt :: CliOptValueType NumberOpt :: CliOptValueType SwitchOpt :: CliOptValueType data CliArgValueType StringArg :: CliArgValueType NumberArg :: CliArgValueType data CliEntryMetadata Opt :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Bool -> CliOptValueType -> CliEntryMetadata [optLong] :: CliEntryMetadata -> Maybe Text [optShort] :: CliEntryMetadata -> Maybe Text [optMetavar] :: CliEntryMetadata -> Maybe Text [optHelp] :: CliEntryMetadata -> Maybe Text [optRequired] :: CliEntryMetadata -> Bool [optValueType] :: CliEntryMetadata -> CliOptValueType Arg :: Maybe Text -> Bool -> CliArgValueType -> CliEntryMetadata [argMetavar] :: CliEntryMetadata -> Maybe Text [optRequired] :: CliEntryMetadata -> Bool [argValueType] :: CliEntryMetadata -> CliArgValueType data CliEntrySpec cmd CmdEntry :: Vector cmd -> CliEntryMetadata -> CliEntrySpec cmd [cliEntryCmdValue] :: CliEntrySpec cmd -> Vector cmd [cliEntryMetadata] :: CliEntrySpec cmd -> CliEntryMetadata PlainEntry :: CliEntryMetadata -> CliEntrySpec cmd [cliEntryMetadata] :: CliEntrySpec cmd -> CliEntryMetadata data CliCmdSpec CliCmdSpec :: Text -> Text -> CliCmdSpec [cliCmdDesc] :: CliCmdSpec -> Text [cliCmdHeader] :: CliCmdSpec -> Text data ConfigSources cmd ConfigSources :: Maybe Text -> Maybe (CliEntrySpec cmd) -> ConfigSources cmd [envVar] :: ConfigSources cmd -> Maybe Text [cliEntry] :: ConfigSources cmd -> Maybe (CliEntrySpec cmd) data ConfigValue cmd ConfigValue :: Maybe Value -> ConfigSources cmd -> ConfigValue cmd [defaultValue] :: ConfigValue cmd -> Maybe Value [configSources] :: ConfigValue cmd -> ConfigSources cmd SubConfig :: HashMap Text (ConfigValue cmd) -> ConfigValue cmd [subConfig] :: ConfigValue cmd -> HashMap Text (ConfigValue cmd) data CliProgramSpec CliProgramSpec :: Text -> Text -> Maybe (HashMap Text CliCmdSpec) -> CliProgramSpec [cliProgramDesc] :: CliProgramSpec -> Text [cliProgramHeader] :: CliProgramSpec -> Text [cliCommands] :: CliProgramSpec -> Maybe (HashMap Text CliCmdSpec) data ConfigSpec cmd ConfigSpec :: [Text] -> Maybe CliProgramSpec -> HashMap Text (ConfigValue cmd) -> ConfigSpec cmd [specConfigFilepaths] :: ConfigSpec cmd -> [Text] [specCliProgramSpec] :: ConfigSpec cmd -> Maybe CliProgramSpec [specConfigValues] :: ConfigSpec cmd -> HashMap Text (ConfigValue cmd) cliArgTypeParser :: Object -> Parser CliArgValueType cliArgParser :: Object -> Parser CliEntryMetadata cliOptTypeParser :: Object -> Parser CliOptValueType cliOptParser :: Object -> Parser CliEntryMetadata cliArgKeys :: [Text] cliOptKeys :: [Text] instance GHC.Classes.Eq cmd => GHC.Classes.Eq (System.Etc.Internal.Spec.Types.ConfigSpec cmd) instance GHC.Show.Show cmd => GHC.Show.Show (System.Etc.Internal.Spec.Types.ConfigSpec cmd) instance GHC.Classes.Eq System.Etc.Internal.Spec.Types.CliProgramSpec instance GHC.Show.Show System.Etc.Internal.Spec.Types.CliProgramSpec instance GHC.Classes.Eq cmd => GHC.Classes.Eq (System.Etc.Internal.Spec.Types.ConfigValue cmd) instance GHC.Show.Show cmd => GHC.Show.Show (System.Etc.Internal.Spec.Types.ConfigValue cmd) instance GHC.Classes.Eq cmd => GHC.Classes.Eq (System.Etc.Internal.Spec.Types.ConfigSources cmd) instance GHC.Show.Show cmd => GHC.Show.Show (System.Etc.Internal.Spec.Types.ConfigSources cmd) instance GHC.Classes.Eq System.Etc.Internal.Spec.Types.CliCmdSpec instance GHC.Show.Show System.Etc.Internal.Spec.Types.CliCmdSpec instance GHC.Classes.Eq cmd => GHC.Classes.Eq (System.Etc.Internal.Spec.Types.CliEntrySpec cmd) instance GHC.Show.Show cmd => GHC.Show.Show (System.Etc.Internal.Spec.Types.CliEntrySpec cmd) instance GHC.Classes.Eq System.Etc.Internal.Spec.Types.CliEntryMetadata instance GHC.Show.Show System.Etc.Internal.Spec.Types.CliEntryMetadata instance GHC.Classes.Eq System.Etc.Internal.Spec.Types.CliArgValueType instance GHC.Show.Show System.Etc.Internal.Spec.Types.CliArgValueType instance GHC.Classes.Eq System.Etc.Internal.Spec.Types.CliOptValueType instance GHC.Show.Show System.Etc.Internal.Spec.Types.CliOptValueType instance GHC.Show.Show System.Etc.Internal.Spec.Types.ConfigurationError instance GHC.Exception.Exception System.Etc.Internal.Spec.Types.ConfigurationError instance Data.Aeson.Types.FromJSON.FromJSON System.Etc.Internal.Spec.Types.CliCmdSpec instance Data.Aeson.Types.FromJSON.FromJSON System.Etc.Internal.Spec.Types.CliProgramSpec instance Data.Aeson.Types.FromJSON.FromJSON cmd => Data.Aeson.Types.FromJSON.FromJSON (System.Etc.Internal.Spec.Types.CliEntrySpec cmd) instance Data.Aeson.Types.FromJSON.FromJSON cmd => Data.Aeson.Types.FromJSON.FromJSON (System.Etc.Internal.Spec.Types.ConfigValue cmd) instance Data.Aeson.Types.FromJSON.FromJSON cmd => Data.Aeson.Types.FromJSON.FromJSON (System.Etc.Internal.Spec.Types.ConfigSpec cmd) module System.Etc.Internal.Types data ConfigSource File :: Int -> Text -> Value -> ConfigSource [configIndex] :: ConfigSource -> Int [filepath] :: ConfigSource -> Text [value] :: ConfigSource -> Value Env :: Text -> Value -> ConfigSource [envVar] :: ConfigSource -> Text [value] :: ConfigSource -> Value Cli :: Value -> ConfigSource [value] :: ConfigSource -> Value Default :: Value -> ConfigSource [value] :: ConfigSource -> Value None :: ConfigSource data ConfigValue ConfigValue :: Set ConfigSource -> ConfigValue [configSource] :: ConfigValue -> Set ConfigSource SubConfig :: HashMap Text ConfigValue -> ConfigValue [configMap] :: ConfigValue -> HashMap Text ConfigValue deepMerge :: ConfigValue -> ConfigValue -> ConfigValue newtype Config Config :: ConfigValue -> Config [fromConfig] :: Config -> ConfigValue isEmptySubConfig :: ConfigValue -> Bool emptySubConfig :: ConfigValue writeInSubConfig :: Text -> ConfigValue -> ConfigValue -> ConfigValue filterMaybe :: (a -> Bool) -> Maybe a -> Maybe a class IConfig config -- | 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 --getConfigValue :: (IConfig config, MonadThrow m, FromJSON result) => [Text] -> config -> 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 {...})
--
getConfigValueWith :: (IConfig config, MonadThrow m) => (Value -> Parser result) -> [Text] -> config -> m result
getAllConfigSources :: (IConfig config, MonadThrow m) => [Text] -> config -> m (Set ConfigSource)
getSelectedConfigSource :: (IConfig config, MonadThrow m) => [Text] -> config -> m ConfigSource
instance GHC.Base.Monoid System.Etc.Internal.Types.Config
instance GHC.Show.Show System.Etc.Internal.Types.Config
instance GHC.Classes.Eq System.Etc.Internal.Types.Config
instance GHC.Show.Show System.Etc.Internal.Types.ConfigValue
instance GHC.Classes.Eq System.Etc.Internal.Types.ConfigValue
instance GHC.Classes.Eq System.Etc.Internal.Types.ConfigSource
instance GHC.Show.Show System.Etc.Internal.Types.ConfigSource
instance GHC.Classes.Ord System.Etc.Internal.Types.ConfigSource
instance GHC.Base.Monoid System.Etc.Internal.Types.ConfigValue
module System.Etc.Internal.Spec.JSON
parseConfigSpec :: (MonadThrow m, FromJSON cmd) => Text -> m (ConfigSpec cmd)
readConfigSpec :: FromJSON cmd => Text -> IO (ConfigSpec cmd)
module System.Etc.Spec
-- | Parses a text input into a ConfigSpec, input can be JSON or
-- YAML (if cabal flag is set).
parseConfigSpec :: (MonadCatch m) => Text -> m (ConfigSpec ())
-- | Reads contents of a file and parses into a ConfigSpec, file
-- contents can be either JSON or YAML (if cabal flag is set).
readConfigSpec :: Text -> IO (ConfigSpec ())
module System.Etc.Internal.Resolver.File
-- | 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.
resolveFiles :: ConfigSpec cmd -> IO (Config, Vector SomeException)
instance GHC.Classes.Eq System.Etc.Internal.Resolver.File.ConfigFile
instance GHC.Show.Show System.Etc.Internal.Resolver.File.ConfigFile
module System.Etc.Internal.Resolver.Env
-- | Gathers all OS Environment Variable values (env entries) from
-- the etc/spec entries inside a ConfigSpec.
resolveEnv :: ConfigSpec cmd -> IO Config
-- | 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.
resolveEnvPure :: ConfigSpec cmd -> [(Text, Text)] -> Config
module System.Etc.Internal.Resolver.Default
-- | Gathers all default values from the etc/spec entries inside a
-- ConfigSpec
resolveDefault :: ConfigSpec cmd -> Config
module System.Etc.Internal.Config
configValueToJsonObject :: ConfigValue -> Value
_getConfigValueWith :: MonadThrow m => (Value -> Parser result) -> [Text] -> Config -> m result
_getSelectedConfigSource :: (MonadThrow m) => [Text] -> Config -> m ConfigSource
_getAllConfigSources :: (MonadThrow m) => [Text] -> Config -> m (Set ConfigSource)
_getConfigValue :: (MonadThrow m, FromJSON result) => [Text] -> Config -> m result
instance System.Etc.Internal.Types.IConfig System.Etc.Internal.Types.Config
module System.Etc
data Config
class IConfig config
-- | 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 --getConfigValue :: (IConfig config, MonadThrow m, FromJSON result) => [Text] -> config -> 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 {...})
--
getConfigValueWith :: (IConfig config, MonadThrow m) => (Value -> Parser result) -> [Text] -> config -> m result
getAllConfigSources :: (IConfig config, MonadThrow m) => [Text] -> config -> m (Set ConfigSource)
getSelectedConfigSource :: (IConfig config, MonadThrow m) => [Text] -> config -> m ConfigSource
-- | 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 --getConfigValue :: (IConfig config, MonadThrow m, FromJSON result) => [Text] -> config -> 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 {...})
--
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
File :: Int -> Text -> Value -> ConfigSource
[configIndex] :: ConfigSource -> Int
[filepath] :: ConfigSource -> Text
[value] :: ConfigSource -> Value
Env :: Text -> Value -> ConfigSource
[envVar] :: ConfigSource -> Text
[value] :: ConfigSource -> Value
Cli :: Value -> ConfigSource
[value] :: ConfigSource -> Value
Default :: Value -> ConfigSource
[value] :: ConfigSource -> Value
None :: ConfigSource
data ConfigValue
data ConfigSpec cmd
data ConfigurationError
InvalidConfiguration :: Text -> ConfigurationError
InvalidConfigKeyPath :: [Text] -> ConfigurationError
ConfigurationFileNotFound :: Text -> ConfigurationError
-- | Parses a text input into a ConfigSpec, input can be JSON or
-- YAML (if cabal flag is set).
parseConfigSpec :: (MonadCatch m) => Text -> m (ConfigSpec ())
-- | Reads contents of a file and parses into a ConfigSpec, file
-- contents can be either JSON or YAML (if cabal flag is set).
readConfigSpec :: Text -> IO (ConfigSpec ())
-- | Gathers all default values from the etc/spec entries inside a
-- ConfigSpec
resolveDefault :: ConfigSpec cmd -> Config
-- | 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.
resolveFiles :: ConfigSpec cmd -> IO (Config, Vector SomeException)
-- | 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.
resolveEnvPure :: ConfigSpec cmd -> [(Text, Text)] -> Config
-- | Gathers all OS Environment Variable values (env entries) from
-- the etc/spec entries inside a ConfigSpec.
resolveEnv :: ConfigSpec cmd -> IO Config