diff --git a/hledger-web/src/Hledger/Web.hs b/hledger-web/Hledger/Web.hs similarity index 100% rename from hledger-web/src/Hledger/Web.hs rename to hledger-web/Hledger/Web.hs diff --git a/hledger-web/src/Application.hs b/hledger-web/Hledger/Web/Application.hs similarity index 82% rename from hledger-web/src/Application.hs rename to hledger-web/Hledger/Web/Application.hs index c0fd24eca..f80b8e137 100644 --- a/hledger-web/src/Application.hs +++ b/hledger-web/Hledger/Web/Application.hs @@ -4,27 +4,26 @@ {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE ViewPatterns #-} -module Application +module Hledger.Web.Application ( makeApplication , makeFoundation ) where -import Import - import Data.IORef (newIORef, writeIORef) import Network.Wai.Middleware.RequestLogger (logStdoutDev, logStdout) import Network.HTTP.Client (defaultManagerSettings) import Network.HTTP.Conduit (newManager) import Yesod.Default.Config -import Handler.AddR (getAddR, postAddR) -import Handler.Common - (getDownloadR, getFaviconR, getManageR, getRobotsR, getRootR) -import Handler.EditR (getEditR, postEditR) -import Handler.UploadR (getUploadR, postUploadR) -import Handler.JournalR (getJournalR) -import Handler.RegisterR (getRegisterR) import Hledger.Data (Journal, nulljournal) +import Hledger.Web.Handler.AddR (getAddR, postAddR) +import Hledger.Web.Handler.Common + (getDownloadR, getFaviconR, getManageR, getRobotsR, getRootR) +import Hledger.Web.Handler.EditR (getEditR, postEditR) +import Hledger.Web.Handler.UploadR (getUploadR, postUploadR) +import Hledger.Web.Handler.JournalR (getJournalR) +import Hledger.Web.Handler.RegisterR (getRegisterR) +import Hledger.Web.Import import Hledger.Web.WebOptions (WebOpts(serve_)) -- This line actually creates our YesodDispatch instance. It is the second half diff --git a/hledger-web/src/Foundation.hs b/hledger-web/Hledger/Web/Foundation.hs similarity index 97% rename from hledger-web/src/Foundation.hs rename to hledger-web/Hledger/Web/Foundation.hs index dc95ea588..b32fcbf3c 100644 --- a/hledger-web/src/Foundation.hs +++ b/hledger-web/Hledger/Web/Foundation.hs @@ -14,7 +14,7 @@ -- | Define the web application's foundation, in the usual Yesod style. -- See a default Yesod app's comments for more details of each part. -module Foundation where +module Hledger.Web.Foundation where import Control.Monad (join) import qualified Data.ByteString.Char8 as BC @@ -34,19 +34,18 @@ import Yesod import Yesod.Static import Yesod.Default.Config -import Settings (Extra(..), widgetFile) -import Settings.StaticFiles -import Widget.Common (balanceReportAsHtml) - #ifndef DEVELOPMENT -import Settings (staticDir) +import Hledger.Web.Settings (staticDir) import Text.Jasmine (minifym) import Yesod.Default.Util (addStaticContentExternal) #endif import Hledger import Hledger.Cli (CliOpts(..), journalReloadIfChanged) +import Hledger.Web.Settings (Extra(..), widgetFile) +import Hledger.Web.Settings.StaticFiles import Hledger.Web.WebOptions +import Hledger.Web.Widget.Common (balanceReportAsHtml) -- | The site argument for your application. This can be a good place to -- keep settings and values requiring initialization before your application @@ -154,7 +153,7 @@ instance Yesod App where -- and names them based on a hash of their content. This allows -- expiration dates to be set far in the future without worry of -- users receiving stale content. - addStaticContent = addStaticContentExternal minifym base64md5 Settings.staticDir (StaticR . flip StaticRoute []) + addStaticContent = addStaticContentExternal minifym base64md5 staticDir (StaticR . flip StaticRoute []) #endif -- This instance is required to use forms. You can modify renderMessage to diff --git a/hledger-web/src/Handler/AddR.hs b/hledger-web/Hledger/Web/Handler/AddR.hs similarity index 86% rename from hledger-web/src/Handler/AddR.hs rename to hledger-web/Hledger/Web/Handler/AddR.hs index fdf25040c..26b3e14bd 100644 --- a/hledger-web/src/Handler/AddR.hs +++ b/hledger-web/Hledger/Web/Handler/AddR.hs @@ -4,17 +4,16 @@ {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE ScopedTypeVariables #-} -module Handler.AddR +module Hledger.Web.Handler.AddR ( getAddR , postAddR ) where -import Import - import Hledger import Hledger.Cli.Commands.Add (appendToJournalFileOrStdout) -import Widget.AddForm (addForm) -import Widget.Common (fromFormSuccess) +import Hledger.Web.Import +import Hledger.Web.Widget.AddForm (addForm) +import Hledger.Web.Widget.Common (fromFormSuccess) getAddR :: Handler () getAddR = postAddR diff --git a/hledger-web/src/Handler/Common.hs b/hledger-web/Hledger/Web/Handler/Common.hs similarity index 87% rename from hledger-web/src/Handler/Common.hs rename to hledger-web/Hledger/Web/Handler/Common.hs index 814148150..306f2af7c 100644 --- a/hledger-web/src/Handler/Common.hs +++ b/hledger-web/Hledger/Web/Handler/Common.hs @@ -3,7 +3,7 @@ {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} -module Handler.Common +module Hledger.Web.Handler.Common ( getDownloadR , getFaviconR , getManageR @@ -11,13 +11,12 @@ module Handler.Common , getRootR ) where -import Import - import qualified Data.Text as T import Yesod.Default.Handlers (getFaviconR, getRobotsR) import Hledger (jfiles) -import Widget.Common (journalFile404) +import Hledger.Web.Import +import Hledger.Web.Widget.Common (journalFile404) getRootR :: Handler Html getRootR = redirect JournalR diff --git a/hledger-web/src/Handler/EditR.hs b/hledger-web/Hledger/Web/Handler/EditR.hs similarity index 88% rename from hledger-web/src/Handler/EditR.hs rename to hledger-web/Hledger/Web/Handler/EditR.hs index 71a3bb7e5..b8d60276c 100644 --- a/hledger-web/src/Handler/EditR.hs +++ b/hledger-web/Hledger/Web/Handler/EditR.hs @@ -5,14 +5,14 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} -module Handler.EditR +module Hledger.Web.Handler.EditR ( getEditR , postEditR ) where -import Import - -import Widget.Common (fromFormSuccess, helplink, journalFile404, writeValidJournal) +import Hledger.Web.Import +import Hledger.Web.Widget.Common + (fromFormSuccess, helplink, journalFile404, writeValidJournal) editForm :: FilePath -> Text -> Markup -> MForm Handler (FormResult Text, Widget) editForm f txt = diff --git a/hledger-web/src/Handler/JournalR.hs b/hledger-web/Hledger/Web/Handler/JournalR.hs similarity index 82% rename from hledger-web/src/Handler/JournalR.hs rename to hledger-web/Hledger/Web/Handler/JournalR.hs index bf6014611..07a1d3481 100644 --- a/hledger-web/src/Handler/JournalR.hs +++ b/hledger-web/Hledger/Web/Handler/JournalR.hs @@ -5,15 +5,14 @@ {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} -module Handler.JournalR where - -import Import +module Hledger.Web.Handler.JournalR where import Hledger import Hledger.Cli.CliOptions +import Hledger.Web.Import import Hledger.Web.WebOptions -import Widget.AddForm (addModal) -import Widget.Common (accountQuery, mixedAmountAsHtml) +import Hledger.Web.Widget.AddForm (addModal) +import Hledger.Web.Widget.Common (accountQuery, mixedAmountAsHtml) -- | The formatted journal view, with sidebar. -- XXX like registerReportAsHtml diff --git a/hledger-web/src/Handler/RegisterR.hs b/hledger-web/Hledger/Web/Handler/RegisterR.hs similarity index 92% rename from hledger-web/src/Handler/RegisterR.hs rename to hledger-web/Hledger/Web/Handler/RegisterR.hs index e7b4f5dc0..bc83640a6 100644 --- a/hledger-web/src/Handler/RegisterR.hs +++ b/hledger-web/Hledger/Web/Handler/RegisterR.hs @@ -6,9 +6,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} -module Handler.RegisterR where - -import Import +module Hledger.Web.Handler.RegisterR where import Data.List (intersperse) import qualified Data.Text as T @@ -16,9 +14,10 @@ import Text.Hamlet (hamletFile) import Hledger import Hledger.Cli.CliOptions +import Hledger.Web.Import import Hledger.Web.WebOptions -import Widget.AddForm (addModal) -import Widget.Common (mixedAmountAsHtml) +import Hledger.Web.Widget.AddForm (addModal) +import Hledger.Web.Widget.Common (mixedAmountAsHtml) -- | The main journal/account register view, with accounts sidebar. getRegisterR :: Handler Html diff --git a/hledger-web/src/Handler/UploadR.hs b/hledger-web/Hledger/Web/Handler/UploadR.hs similarity index 92% rename from hledger-web/src/Handler/UploadR.hs rename to hledger-web/Hledger/Web/Handler/UploadR.hs index 29b2a1f2b..2137726d9 100644 --- a/hledger-web/src/Handler/UploadR.hs +++ b/hledger-web/Hledger/Web/Handler/UploadR.hs @@ -4,19 +4,18 @@ {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} -module Handler.UploadR +module Hledger.Web.Handler.UploadR ( getUploadR , postUploadR ) where -import Import - import qualified Data.ByteString.Lazy as BL import Data.Conduit (connect) import Data.Conduit.Binary (sinkLbs) import qualified Data.Text.Encoding as TE -import Widget.Common (fromFormSuccess, journalFile404, writeValidJournal) +import Hledger.Web.Import +import Hledger.Web.Widget.Common (fromFormSuccess, journalFile404, writeValidJournal) uploadForm :: FilePath -> Markup -> MForm Handler (FormResult FileInfo, Widget) uploadForm f = diff --git a/hledger-web/src/Import.hs b/hledger-web/Hledger/Web/Import.hs similarity index 81% rename from hledger-web/src/Import.hs rename to hledger-web/Hledger/Web/Import.hs index e5e41abf3..67cceadcf 100644 --- a/hledger-web/src/Import.hs +++ b/hledger-web/Hledger/Web/Import.hs @@ -1,7 +1,7 @@ {-# LANGUAGE CPP #-} -module Import - ( module Import - ) where +module Hledger.Web.Import + ( module Import + ) where import Prelude as Import hiding (head, init, last, readFile, tail, writeFile) @@ -21,10 +21,9 @@ import Data.Traversable as Import import Data.Void as Import (Void) import Text.Blaze as Import (Markup) -import Foundation as Import -import Settings as Import -import Settings.Development as Import -import Settings.StaticFiles as Import +import Hledger.Web.Foundation as Import +import Hledger.Web.Settings as Import +import Hledger.Web.Settings.StaticFiles as Import #if !(MIN_VERSION_base(4,11,0)) import Data.Monoid as Import ((<>)) diff --git a/hledger-web/src/Hledger/Web/Main.hs b/hledger-web/Hledger/Web/Main.hs similarity index 97% rename from hledger-web/src/Hledger/Web/Main.hs rename to hledger-web/Hledger/Web/Main.hs index 032da12a7..909664b70 100644 --- a/hledger-web/src/Hledger/Web/Main.hs +++ b/hledger-web/Hledger/Web/Main.hs @@ -25,13 +25,12 @@ import Text.Printf (printf) import Yesod.Default.Config import Yesod.Default.Main (defaultDevelApp) -import Application (makeApplication) -import Settings (Extra(..), parseExtra) - import Hledger import Hledger.Cli hiding (progname,prognameandversion) import Hledger.Cli.Utils (journalTransform) import Hledger.Utils.UTF8IOCompat (putStrLn) +import Hledger.Web.Application (makeApplication) +import Hledger.Web.Settings (Extra(..), parseExtra) import Hledger.Web.WebOptions diff --git a/hledger-web/src/Settings.hs b/hledger-web/Hledger/Web/Settings.hs similarity index 95% rename from hledger-web/src/Settings.hs rename to hledger-web/Hledger/Web/Settings.hs index 4bd86dd54..56f37953b 100644 --- a/hledger-web/src/Settings.hs +++ b/hledger-web/Hledger/Web/Settings.hs @@ -4,7 +4,7 @@ -- In addition, you can configure a number of different aspects of Yesod -- by overriding methods in the Yesod typeclass. That instance is -- declared in the Foundation.hs file. -module Settings where +module Hledger.Web.Settings where import Data.Default (def) import Data.Semigroup ((<>)) @@ -16,8 +16,16 @@ import Text.Shakespeare.Text (st) import Yesod.Default.Config import Yesod.Default.Util -import Settings.Development +development :: Bool +development = +#if DEVELOPMENT + True +#else + False +#endif +production :: Bool +production = not development hledgerorgurl :: Text hledgerorgurl = "http://hledger.org" diff --git a/hledger-web/src/Settings/StaticFiles.hs b/hledger-web/Hledger/Web/Settings/StaticFiles.hs similarity index 90% rename from hledger-web/src/Settings/StaticFiles.hs rename to hledger-web/Hledger/Web/Settings/StaticFiles.hs index 291b38351..a63a084d9 100644 --- a/hledger-web/src/Settings/StaticFiles.hs +++ b/hledger-web/Hledger/Web/Settings/StaticFiles.hs @@ -1,11 +1,10 @@ {-# LANGUAGE TemplateHaskell #-} -module Settings.StaticFiles where +module Hledger.Web.Settings.StaticFiles where import System.IO (stdout, hFlush) import Yesod.Static (Static, embed, publicFiles, staticDevel) -import Settings (staticDir) -import Settings.Development (development) +import Hledger.Web.Settings (staticDir, development) -- | use this to create your static file serving site -- staticSite :: IO Static.Static diff --git a/hledger-web/src/Hledger/Web/WebOptions.hs b/hledger-web/Hledger/Web/WebOptions.hs similarity index 98% rename from hledger-web/src/Hledger/Web/WebOptions.hs rename to hledger-web/Hledger/Web/WebOptions.hs index be361ef34..072cd69af 100644 --- a/hledger-web/src/Hledger/Web/WebOptions.hs +++ b/hledger-web/Hledger/Web/WebOptions.hs @@ -12,9 +12,8 @@ import qualified Data.Text as T import Data.Text (Text) import System.Environment (getArgs) -import Settings (defhost, defport, defbaseurl) - import Hledger.Cli hiding (progname, version) +import Hledger.Web.Settings (defhost, defport, defbaseurl) progname, version :: String progname = "hledger-web" diff --git a/hledger-web/src/Widget/AddForm.hs b/hledger-web/Hledger/Web/Widget/AddForm.hs similarity index 98% rename from hledger-web/src/Widget/AddForm.hs rename to hledger-web/Hledger/Web/Widget/AddForm.hs index 19b53d660..003918912 100644 --- a/hledger-web/src/Widget/AddForm.hs +++ b/hledger-web/Hledger/Web/Widget/AddForm.hs @@ -5,7 +5,7 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TemplateHaskell #-} -module Widget.AddForm +module Hledger.Web.Widget.AddForm ( addForm , addModal ) where @@ -24,7 +24,7 @@ import Text.Megaparsec (eof, parseErrorPretty, runParser) import Yesod import Hledger -import Settings (widgetFile) +import Hledger.Web.Settings (widgetFile) -- XXX