135 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
| {-# LANGUAGE CPP #-}
 | |
| module Hledger.Web.Settings
 | |
|     ( hamletFile
 | |
|     , cassiusFile
 | |
|     , juliusFile
 | |
|     , connStr
 | |
|     , ConnectionPool
 | |
|     , withConnectionPool
 | |
|     , runConnectionPool
 | |
|     , approot
 | |
|     , staticroot
 | |
|     , datadir
 | |
|     , staticdir
 | |
|     , templatesdir
 | |
| 
 | |
|     , defhost
 | |
|     , defport
 | |
|     , browserstartdelay
 | |
|     , hledgerorgurl
 | |
|     , manualurl
 | |
|     , style_css
 | |
|     , hledger_js
 | |
|     , jquery_js
 | |
|     , jquery_url_js
 | |
|     , dhtmlxcommon_js
 | |
|     , dhtmlxcombo_js
 | |
|     , robots_txt
 | |
|     ) where
 | |
| 
 | |
| import System.FilePath ((</>))
 | |
| import Text.Printf (printf)
 | |
| import qualified Text.Hamlet as H
 | |
| import qualified Text.Cassius as H
 | |
| import qualified Text.Julius as H
 | |
| import Language.Haskell.TH.Syntax
 | |
| import Database.Persist.Sqlite
 | |
| import Yesod (MonadCatchIO)
 | |
| import Yesod.Helpers.Static
 | |
| 
 | |
| 
 | |
| browserstartdelay = 100000 -- microseconds
 | |
| 
 | |
| ----------------------------------------------------------------------
 | |
| -- urls
 | |
| ----------------------------------------------------------------------
 | |
| 
 | |
| hledgerorgurl     = "http://hledger.org"
 | |
| manualurl         = hledgerorgurl++"/MANUAL.html"
 | |
| 
 | |
| defhost           = "localhost"
 | |
| defport           = 5000
 | |
| 
 | |
| approot :: String
 | |
| #ifdef PRODUCTION
 | |
| approot = printf "http://%s:%d" defhost (defport :: Int)
 | |
| #else
 | |
| approot = printf "http://%s:%d" defhost (defport :: Int)
 | |
| #endif
 | |
| 
 | |
| staticroot :: String
 | |
| staticroot = approot ++ "/static"
 | |
| 
 | |
| -- Some static routes we can refer to by name, without hard-coded filesystem location.
 | |
| style_css       = StaticRoute ["style.css"] []
 | |
| hledger_js      = StaticRoute ["hledger.js"] []
 | |
| jquery_js       = StaticRoute ["jquery.js"] []
 | |
| jquery_url_js   = StaticRoute ["jquery.url.js"] []
 | |
| dhtmlxcommon_js = StaticRoute ["dhtmlxcommon.js"] []
 | |
| dhtmlxcombo_js  = StaticRoute ["dhtmlxcombo.js"] []
 | |
| 
 | |
| -- Content for /robots.txt
 | |
| robots_txt = "User-agent: *"
 | |
| 
 | |
| 
 | |
| ----------------------------------------------------------------------
 | |
| -- filesystem
 | |
| ----------------------------------------------------------------------
 | |
| 
 | |
| -- XXX hard-coded data directory path. This must be in your current dir
 | |
| -- when you run or compile hledger-web.
 | |
| datadir :: FilePath
 | |
| datadir = ".hledger"
 | |
| 
 | |
| staticdir :: FilePath
 | |
| staticdir = datadir ++ "/web"
 | |
| 
 | |
| templatesdir :: FilePath
 | |
| templatesdir = datadir ++ "/web"
 | |
| 
 | |
| -- The following are compile-time macros. If the file paths they point to
 | |
| -- don't exist, they will give an error (at compile time). In production
 | |
| -- mode, files are read once at compile time, otherwise repeatedly at runtime.
 | |
| 
 | |
| hamletFile :: FilePath -> Q Exp
 | |
| #ifdef PRODUCTION
 | |
| hamletFile x = H.hamletFile $ templatesdir </> (x ++ ".hamlet")
 | |
| #else
 | |
| hamletFile x = H.hamletFileDebug $ templatesdir </> (x ++ ".hamlet")
 | |
| #endif
 | |
| 
 | |
| cassiusFile :: FilePath -> Q Exp
 | |
| #ifdef PRODUCTION
 | |
| cassiusFile x = H.cassiusFile $ templatesdir </> (x ++ ".cassius")
 | |
| #else
 | |
| cassiusFile x = H.cassiusFileDebug $ templatesdir </> (x ++ ".cassius")
 | |
| #endif
 | |
| 
 | |
| juliusFile :: FilePath -> Q Exp
 | |
| #ifdef PRODUCTION
 | |
| juliusFile x = H.juliusFile $ templatesdir </> (x ++ ".julius")
 | |
| #else
 | |
| juliusFile x = H.juliusFileDebug $ templatesdir </> (x ++ ".julius")
 | |
| #endif
 | |
| 
 | |
| ----------------------------------------------------------------------
 | |
| -- database
 | |
| ----------------------------------------------------------------------
 | |
| 
 | |
| connStr :: String
 | |
| #ifdef PRODUCTION
 | |
| connStr = "production.db3"
 | |
| #else
 | |
| connStr = "debug.db3"
 | |
| #endif
 | |
| 
 | |
| connectionCount :: Int
 | |
| connectionCount = 10
 | |
| 
 | |
| withConnectionPool :: MonadCatchIO m => (ConnectionPool -> m a) -> m a
 | |
| withConnectionPool = withSqlitePool connStr connectionCount
 | |
| 
 | |
| runConnectionPool :: MonadCatchIO m => SqlPersist m a -> ConnectionPool -> m a
 | |
| runConnectionPool = runSqlPool
 | |
| 
 |