packages feed

hledger-web-0.18: Hledger/Web/Settings/StaticFiles.hs

{-# 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)