Stylistic changes to scaffolded main
This commit is contained in:
parent
f99a64e372
commit
c569ed5f2f
@ -15,44 +15,54 @@ import Yesod.Logger (makeLogger)
|
|||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
logger <- makeLogger
|
logger <- makeLogger
|
||||||
args <- cmdArgs argConfig
|
args <- cmdArgs argConfig
|
||||||
env <- getAppEnv args
|
env <- getAppEnv args
|
||||||
config <- loadConfig env
|
config <- loadConfig env
|
||||||
let c = if (port args) /= 0 then config {appPort = (port args) } else config
|
let c = if port args /= 0
|
||||||
|
then config { appPort = port args }
|
||||||
|
else config
|
||||||
|
|
||||||
#if PRODUCTION
|
#if PRODUCTION
|
||||||
with~sitearg~ c logger $ run (appPort c)
|
with~sitearg~ c logger $ run (appPort c)
|
||||||
#else
|
#else
|
||||||
logString logger $ (show env) ++ " application launched, listening on port " ++ show (appPort c)
|
logString logger $ (show env) ++ " application launched, listening on port " ++ show (appPort c)
|
||||||
with~sitearg~ c logger $ run (appPort c) . debugHandle (logHandle logger)
|
with~sitearg~ c logger $ run (appPort c) . debugHandle (logHandle logger)
|
||||||
flushLogger logger
|
flushLogger logger
|
||||||
where
|
|
||||||
logHandle logger msg = logLazyText logger msg >> flushLogger logger
|
where
|
||||||
|
logHandle logger msg = logLazyText logger msg >> flushLogger logger
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
data ArgConfig = ArgConfig {environment :: String, port :: Int}
|
data ArgConfig = ArgConfig
|
||||||
deriving (Show, Data, Typeable)
|
{ environment :: String
|
||||||
|
, port :: Int
|
||||||
|
} deriving (Show, Data, Typeable)
|
||||||
|
|
||||||
argConfig :: ArgConfig
|
argConfig :: ArgConfig
|
||||||
argConfig = ArgConfig{ environment = def
|
argConfig = ArgConfig
|
||||||
&= help ("application environment, one of: " ++ (foldl1 (\a b -> a ++ ", " ++ b) environments))
|
{ environment = def
|
||||||
&= typ "ENVIRONMENT"
|
&= help ("application environment, one of: " ++ (foldl1 (\a b -> a ++ ", " ++ b) environments))
|
||||||
,port = def &= typ "PORT"
|
&= typ "ENVIRONMENT"
|
||||||
}
|
, port = def
|
||||||
|
&= typ "PORT"
|
||||||
|
}
|
||||||
|
|
||||||
environments :: [String]
|
environments :: [String]
|
||||||
environments = map ((map toLower) . show) ([minBound..maxBound] :: [AppEnvironment])
|
environments = map ((map toLower) . show) ([minBound..maxBound] :: [AppEnvironment])
|
||||||
|
|
||||||
-- | retrieve the -e environment option
|
-- | retrieve the -e environment option
|
||||||
getAppEnv :: ArgConfig -> IO AppEnvironment
|
getAppEnv :: ArgConfig -> IO AppEnvironment
|
||||||
getAppEnv cfg = do
|
getAppEnv cfg = do
|
||||||
let e = if (environment cfg) /= "" then (environment cfg)
|
let e = if environment cfg /= ""
|
||||||
|
then environment cfg
|
||||||
else
|
else
|
||||||
#if PRODUCTION
|
#if PRODUCTION
|
||||||
"production"
|
"production"
|
||||||
#else
|
#else
|
||||||
"development"
|
"development"
|
||||||
#endif
|
#endif
|
||||||
return $ read $ capitalize e
|
return $ read $ capitalize e
|
||||||
where
|
|
||||||
capitalize [] = []
|
where
|
||||||
capitalize (x:xs) = toUpper x : map toLower xs
|
capitalize [] = []
|
||||||
|
capitalize (x:xs) = toUpper x : map toLower xs
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user