Copyright | 2020 Christian Rocha |
---|---|
License | MIT |
Maintainer | christian@rocha.is |
Stability | experimental |
Portability | POSIX |
Safe Haskell | Safe |
Language | Haskell2010 |
A simple way to read environment variables.
Documentation
Read environment variables with fallback values.
A simple example with do
notation:
import System.Environment.MrEnv ( envAsBool, envAsInt, envAsInteger, envAsString ) main :: IO () main = do -- Get a string, with a fallback value if nothing is set. host <- envAsString "HOST" "localhost" -- Get an int. If you need an integer instead you could also use envAsInteger. port <- envAsInt "PORT" 8000 -- Get a boolean. Here we're expecting the environment variable to reading -- something along the lines of "true", "TRUE", "True", "truE" and so on. debug <- envAsBool "DEBUG" False putStrLn $ "Let's connect to " ++ host ++ " on port " ++ show port ++ ". Debug mode is " ++ if debug then "on" else "off" ++ "."
You can also read into a record:
import System.Environment.MrEnv ( envAsBool, envAsInt, envAsInteger, envAsString ) data Config = Config { host :: String , port :: Int , debug :: Bool } getConfig :: IO Config getConfig = Config <$> envAsString "HOST" "localhost" <*> envAsInt "PORT" 8000 <*> envAsBool "DEBUG" False main :: IO () main = getConfig >>= conf -> putStrLn $ "Let's connect to " ++ host c ++ " on port " ++ show $ port c ++ ". Debug mode is " ++ if debug c then "on" else "off" ++ "."
Get an environment variable as a boolean, with a default fallback value
Get an environment variable as an int, with a default fallback value
Get an environment variable as an integer, with a default fallback value