herringbone-0.1.0: Web/Herringbone/Internal/Configuration.hs
module Web.Herringbone.Internal.Configuration where
import Data.Time.Clock (getCurrentTime)
import Filesystem.Path.CurrentOS (FilePath)
import Prelude hiding (FilePath)
import Web.Herringbone.Internal.Types
-- | For convenience.
herringbone :: ConfigBuilder -> IO Herringbone
herringbone = initHerringbone . makeSettings
-- | Creates a 'HerringboneSettings' instance from a 'ConfigBuilder'.
-- This just applies the config builder to the default settings:
--
-- > makeSettings builder = builder defaultSettings
makeSettings :: ConfigBuilder -> HerringboneSettings
makeSettings builder = builder defaultSettings
-- | Sets up internal state, and returns a Herringbone, ready to be used.
initHerringbone :: HerringboneSettings -> IO Herringbone
initHerringbone settings = do
time <- getCurrentTime
return Herringbone
{ herringboneStartTime = time
, herringboneSettings = settings
}
-- | Adds a directory to the list of source directories.
setSourceDir :: FilePath -> ConfigBuilder
setSourceDir dir settings =
settings { settingsSourceDir = dir }
-- | Sets the destination directory. Note that this will overwrite the
-- destination directory if one is already set.
setDestDir :: FilePath -> ConfigBuilder
setDestDir dir settings =
settings { settingsDestDir = dir }
-- | Set the preprocessor collection to the given list of preprocessors
setPreprocessors :: [PP] -> ConfigBuilder
setPreprocessors ppList settings =
settings { settingsPPs = fromList ppList }
-- | Add a preprocessor to the 'HerringboneSettings'
addPreprocessor :: PP -> ConfigBuilder
addPreprocessor pp settings =
settings { settingsPPs = insertPP pp (settingsPPs settings) }
-- | Displays detailed log information during requests. Useful for debugging.
setVerbose :: ConfigBuilder
setVerbose settings =
settings { settingsVerbose = True }
defaultSettings :: HerringboneSettings
defaultSettings = HerringboneSettings
{ settingsSourceDir = "."
, settingsDestDir = "compiled_assets"
, settingsPPs = emptyPPs
, settingsVerbose = False
}