Copyright | (c) David Johnson 2015 |
---|---|
Maintainer | djohnson.m@ngmail.com |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
{-# LANGUAGE DeriveGeneric #-} module Main ( main ) where import System.Envy import GHC.Generics data PGConfig = PGConfig { pgHost :: String -- "PG_HOST" , pgPort :: Int -- "PG_PORT" } deriving (Generic, Show) -- Default instance used if environment variable doesn't exist instance DefConfig PGConfig where defConfig = PGConfig "localhost" 5432 instance FromEnv PGConfig -- Generically produces the following body (no implementation needed if using Generics): -- fromEnv = PGConfig <$> envMaybe "PG_HOST" .!= "localhost" -- <*> envMaybe "PG_PORT" .!= 5432 main :: IO () main = print =<< do decodeEnv :: IO (Either String PGConfig) -- PGConfig { pgHost = "custom-pg-url", pgPort = 5432 }
- class FromEnv a where
- fromEnv :: Parser a
- class ToEnv a where
- class Var a where
- data EnvList a
- decodeEnv :: FromEnv a => IO (Either String a)
- decode :: FromEnv a => IO (Maybe a)
- showEnv :: IO ()
- setEnvironment :: EnvList a -> IO (Either String ())
- setEnvironment' :: ToEnv a => a -> IO (Either String ())
- unsetEnvironment :: ToEnv a => EnvList a -> IO (Either String ())
- makeEnv :: ToEnv a => [EnvVar] -> EnvList a
- env :: forall a. (Typeable a, Var a) => String -> Parser a
- envMaybe :: forall a. (Typeable a, Var a) => String -> Parser (Maybe a)
- (.=) :: Var a => String -> a -> EnvVar
- (.!=) :: forall a. (Typeable a, Var a) => Parser (Maybe a) -> a -> Parser a
- class DefConfig a where
- defConfig :: a
- data Option = Option {}
- runEnv :: Parser a -> IO (Either String a)
- gFromEnvCustom :: forall a. (DefConfig a, Generic a, GFromEnv (Rep a)) => Option -> Parser a
Classes
FromEnv
Typeclass w/ Generic default implementation
Nothing
Class for converting to / from an environment variable
Functions
setEnvironment :: EnvList a -> IO (Either String ()) Source
Set environment via a ToEnv constrained type
setEnvironment' :: ToEnv a => a -> IO (Either String ()) Source
Set environment directly using a value of class ToEnv
unsetEnvironment :: ToEnv a => EnvList a -> IO (Either String ()) Source
Unset Environment from a ToEnv
constrained type
envMaybe :: forall a. (Typeable a, Var a) => String -> Parser (Maybe a) Source
Environment variable getter returning Maybe
(.=) :: Var a => String -> a -> EnvVar Source
Infix environment variable setter
Smart constructor for producing types of EnvVar
(.!=) :: forall a. (Typeable a, Var a) => Parser (Maybe a) -> a -> Parser a Source
For use with (.:?) for providing default arguments
Generics
For customizing environment variable generation
Option | |
|