{-# LANGUAGE TemplateHaskell #-}
module Hledger.Web.Settings.StaticFiles where

import System.IO (stdout, hFlush)
import Yesod.Static (Static, embed, publicFiles, staticDevel)

import Hledger.Web.Settings (staticDir, development)

-- | use this to create your static file serving site
-- staticSite :: IO Static.Static
-- staticSite = if development then Static.staticDevel staticDir
--                             else 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.
--   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.
-- $(staticFiles Settings.staticDir)


staticSite :: IO Static
staticSite :: IO Static
staticSite =
  if Bool
development
   then (do
            String -> IO ()
putStrLn (String
"Using web files from: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
staticDir String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
"/") IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Handle -> IO ()
hFlush Handle
stdout
            String -> IO Static
staticDevel String
staticDir)
   else (do
            -- putStrLn "Using built-in web files" >> hFlush stdout
            Static -> IO Static
forall (m :: * -> *) a. Monad m => a -> m a
return $(embed staticDir))

$(publicFiles staticDir)