From 687961cd22dba85b81b553b7056227eb27ffb21c Mon Sep 17 00:00:00 2001 From: Patrick Palka Date: Fri, 6 Apr 2012 12:16:03 -0400 Subject: [PATCH] [scaffold] refactor uses of CPP into pure Haskell --- yesod/scaffold/Application.hs.cg | 16 +++------------- yesod/scaffold/Import.hs.cg | 1 + yesod/scaffold/Settings.hs.cg | 8 +++----- yesod/scaffold/Settings/Development.hs.cg | 12 ++++++++++++ yesod/scaffold/Settings/StaticFiles.hs.cg | 8 ++------ 5 files changed, 21 insertions(+), 24 deletions(-) create mode 100644 yesod/scaffold/Settings/Development.hs.cg diff --git a/yesod/scaffold/Application.hs.cg b/yesod/scaffold/Application.hs.cg index 20a58b61..64a38706 100644 --- a/yesod/scaffold/Application.hs.cg +++ b/yesod/scaffold/Application.hs.cg @@ -10,13 +10,8 @@ import Yesod.Auth import Yesod.Default.Config import Yesod.Default.Main import Yesod.Default.Handlers -#if DEVELOPMENT -import Yesod.Logger (Logger, logBS) -import Network.Wai.Middleware.RequestLogger (logCallbackDev) -#else import Yesod.Logger (Logger, logBS, toProduction) -import Network.Wai.Middleware.RequestLogger (logCallback) -#endif +import Network.Wai.Middleware.RequestLogger (logCallback, logCallbackDev) import qualified Database.Persist.Store~importMigration~ import Network.HTTP.Conduit (newManager, def) @@ -38,13 +33,8 @@ makeApplication conf logger = do app <- toWaiAppPlain foundation return $ logWare app where -#ifdef DEVELOPMENT - logWare = logCallbackDev (logBS setLogger) - setLogger = logger -#else - setLogger = toProduction logger -- by default the logger is set for development - logWare = logCallback (logBS setLogger) -#endif + logWare = dev logCallbackDev logCallback (logBS setLogger) + setLogger = dev id toProduction logger makeFoundation :: AppConfig DefaultEnv Extra -> Logger -> IO ~sitearg~ makeFoundation conf setLogger = do diff --git a/yesod/scaffold/Import.hs.cg b/yesod/scaffold/Import.hs.cg index bc64119d..61ccab17 100644 --- a/yesod/scaffold/Import.hs.cg +++ b/yesod/scaffold/Import.hs.cg @@ -18,6 +18,7 @@ import Data.Monoid (Monoid (mappend, mempty, mconcat)) import Control.Applicative ((<$>), (<*>), pure) import Data.Text (Text) import Settings.StaticFiles +import Settings.Development #if __GLASGOW_HASKELL__ < 704 infixr 5 <> diff --git a/yesod/scaffold/Settings.hs.cg b/yesod/scaffold/Settings.hs.cg index e022d478..2c8434e6 100644 --- a/yesod/scaffold/Settings.hs.cg +++ b/yesod/scaffold/Settings.hs.cg @@ -21,6 +21,7 @@ import qualified Yesod.Default.Util import Data.Text (Text) import Data.Yaml import Control.Applicative +import Settings.Development -- | Which Persistent backend this site is using. type PersistConfig = ~configPersist~ @@ -53,11 +54,8 @@ staticRoot conf = [st|#{appRoot conf}/static|] -- user. widgetFile :: String -> Q Exp -#if DEVELOPMENT -widgetFile = Yesod.Default.Util.widgetFileReload -#else -widgetFile = Yesod.Default.Util.widgetFileNoReload -#endif +widgetFile = dev Yesod.Default.Util.widgetFileReload + Yesod.Default.Util.widgetFileNoReload data Extra = Extra { extraCopyright :: Text diff --git a/yesod/scaffold/Settings/Development.hs.cg b/yesod/scaffold/Settings/Development.hs.cg new file mode 100644 index 00000000..38e4448f --- /dev/null +++ b/yesod/scaffold/Settings/Development.hs.cg @@ -0,0 +1,12 @@ +module Settings.Development where + +development :: Bool +development = +#if DEVELOPMENT + True +#else + False +#endif + +dev :: a -> a -> a +dev a b = if development then a else b diff --git a/yesod/scaffold/Settings/StaticFiles.hs.cg b/yesod/scaffold/Settings/StaticFiles.hs.cg index e6048731..759c7427 100644 --- a/yesod/scaffold/Settings/StaticFiles.hs.cg +++ b/yesod/scaffold/Settings/StaticFiles.hs.cg @@ -4,15 +4,11 @@ import Prelude (IO) import Yesod.Static import qualified Yesod.Static as Static import Settings (staticDir) +import Settings.Development -- | use this to create your static file serving site staticSite :: IO Static.Static -staticSite = -#ifdef DEVELOPMENT - Static.staticDevel staticDir -#else - Static.static staticDir -#endif +staticSite = dev Static.staticDevel Static.static staticDir -- | This generates easy references to files in the static directory at compile time, -- giving you compile-time verification that referenced files exist.