diff --git a/yesod/Yesod/Default/Config.hs b/yesod/Yesod/Default/Config.hs index 12ac5cc3..a1619053 100644 --- a/yesod/Yesod/Default/Config.hs +++ b/yesod/Yesod/Default/Config.hs @@ -4,6 +4,7 @@ module Yesod.Default.Config ( DefaultEnv (..) , fromArgs + , fromArgsSettings , loadDevelopmentConfig -- reexport @@ -71,19 +72,19 @@ parseArgConfig = do capitalize [] = [] capitalize (x:xs) = toUpper x : map toLower xs --- | Load the app config from command line parameters -fromArgs :: (Read env, Show env, Enum env, Bounded env) - => (env -> Object -> Parser extra) - -> IO (AppConfig env extra) -fromArgs getExtra = do +-- | Load the app config from command line parameters, using the given +-- @ConfigSettings. +-- +-- Since 1.2.2 +fromArgsSettings :: (Read env, Show env, Enum env, Bounded env) + => (env -> IO (ConfigSettings env extra)) + -> IO (AppConfig env extra) +fromArgsSettings cs = do args <- parseArgConfig let env = environment args - let cs = (configSettings env) - { csParseExtra = getExtra - } - config <- loadConfig cs + config <- cs env >>= loadConfig env' <- getEnvironment let config' = @@ -95,6 +96,14 @@ fromArgs getExtra = do then config' { appPort = port args } else config' +-- | Load the app config from command line parameters +fromArgs :: (Read env, Show env, Enum env, Bounded env) + => (env -> Object -> Parser extra) + -> IO (AppConfig env extra) +fromArgs getExtra = fromArgsSettings $ \env -> return (configSettings env) + { csParseExtra = getExtra + } + -- | Load your development config (when using @'DefaultEnv'@) loadDevelopmentConfig :: IO (AppConfig DefaultEnv ()) loadDevelopmentConfig = loadConfig $ configSettings Development diff --git a/yesod/yesod.cabal b/yesod/yesod.cabal index b33c1146..33c43d5f 100644 --- a/yesod/yesod.cabal +++ b/yesod/yesod.cabal @@ -1,5 +1,5 @@ name: yesod -version: 1.2.1.1 +version: 1.2.2 license: MIT license-file: LICENSE author: Michael Snoyman