-
Notifications
You must be signed in to change notification settings - Fork 2
/
Config.hs
36 lines (27 loc) · 938 Bytes
/
Config.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
module Hilt.Config where
import Text.Read (readMaybe)
import qualified System.Environment as E (lookupEnv)
import Network.Wai (Middleware)
import Network.Wai.Middleware.RequestLogger (logStdoutDev, logStdout)
import Data.Maybe (fromMaybe)
data Environment =
Development
| Test
| Staging
| Production
deriving (Eq, Show, Read)
lookupEnv :: Read a => String -> a -> IO a
lookupEnv name defaultVal = do
param <- E.lookupEnv name
pure $ case param of
Nothing -> defaultVal
Just a -> fromMaybe defaultVal (readMaybe a)
lookupEnvString :: String -> String -> IO String
lookupEnvString name defaultVal = do
param <- E.lookupEnv name
pure $ fromMaybe defaultVal param
logger :: Environment -> Middleware
logger Test = id
logger Development = logStdoutDev
logger Staging = logStdoutDev
logger Production = logStdout