hledger/hledger-web/Hledger/Web/Settings/StaticFiles.hs
2012-05-29 02:53:33 +00:00

38 lines
1.2 KiB
Haskell

{-# LANGUAGE QuasiQuotes, TemplateHaskell, TypeFamilies, CPP, OverloadedStrings #-}
{-|
This module exports routes for all the files in the static directory at
compile time, allowing compile-time verification that referenced files
exist. However, any files added during run-time can't be accessed this
way; use their FilePath or URL to access them.
This is a separate module to satisfy template haskell requirements.
-}
module Hledger.Web.Settings.StaticFiles where
import System.IO
import Yesod.Static
import qualified Yesod.Static as Static
import Prelude
import Hledger.Web.Settings (staticDir)
-- | use this to create your static file serving site
staticSite :: IO Static.Static
staticSite = do
#ifdef DEVELOPMENT
putStrLn ("using web files from: " ++ staticDir ++ "/") >> hFlush stdout
Static.staticDevel staticDir
#else
putStrLn "using embedded web files" >> hFlush stdout
return $(Static.embed staticDir)
#endif
-- | This generates easy references to files in the static directory at compile time,
-- giving you compile-time verification that referenced files exist.
-- Warning: any files added to your static directory during run-time can't be
-- accessed this way. You'll have to use their FilePath or URL to access them.
$(publicFiles staticDir)