lib: refactor, add embedFileRelative
This commit is contained in:
parent
4f8153cf82
commit
550aa408eb
@ -37,15 +37,19 @@ where
|
||||
import Control.Monad (liftM, when)
|
||||
-- import Data.Char
|
||||
import Data.Default
|
||||
import Data.FileEmbed (makeRelativeToProject, embedFile)
|
||||
import Data.List
|
||||
-- import Data.Maybe
|
||||
-- import Data.PPrint
|
||||
import Data.String.Here (hereFile)
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text.IO as T
|
||||
import Data.Time.Clock
|
||||
import Data.Time.LocalTime
|
||||
-- import Data.Text (Text)
|
||||
-- import qualified Data.Text as T
|
||||
import Language.Haskell.TH.Quote (QuasiQuoter(..))
|
||||
import Language.Haskell.TH.Syntax (Q, Exp)
|
||||
import System.Directory (getHomeDirectory)
|
||||
import System.FilePath((</>), isRelative)
|
||||
import System.IO
|
||||
@ -220,6 +224,18 @@ sequence' ms = do
|
||||
mapM' :: Monad f => (a -> f b) -> [a] -> f [b]
|
||||
mapM' f = sequence' . map f
|
||||
|
||||
-- | Like embedFile, but takes a path relative to the package directory.
|
||||
-- Similar to hereFileRelative ?
|
||||
embedFileRelative :: FilePath -> Q Exp
|
||||
embedFileRelative f = makeRelativeToProject f >>= embedFile
|
||||
|
||||
-- | Like hereFile, but takes a path relative to the package directory.
|
||||
-- Similar to embedFileRelative ?
|
||||
hereFileRelative :: FilePath -> Q Exp
|
||||
hereFileRelative f = makeRelativeToProject f >>= hereFileExp
|
||||
where
|
||||
QuasiQuoter{quoteExp=hereFileExp} = hereFile
|
||||
|
||||
tests_Utils = tests "Utils" [
|
||||
tests_Text
|
||||
]
|
||||
|
||||
@ -4,7 +4,7 @@ cabal-version: 1.12
|
||||
--
|
||||
-- see: https://github.com/sol/hpack
|
||||
--
|
||||
-- hash: 510ffa940692e35167ef2f17c5eaa61f6510793dc0a902f0daac254da37fee9e
|
||||
-- hash: 83c1fff5c5877da9fe972db3b0b57fb31687fbdb4476b7ee0136e76a64e2f69e
|
||||
|
||||
name: hledger-lib
|
||||
version: 1.12.99
|
||||
@ -121,8 +121,10 @@ library
|
||||
, directory
|
||||
, easytest
|
||||
, extra
|
||||
, file-embed >=0.0.10
|
||||
, filepath
|
||||
, hashtables >=1.2.3.1
|
||||
, here
|
||||
, megaparsec >=7.0.0 && <8
|
||||
, mtl
|
||||
, mtl-compat
|
||||
@ -134,6 +136,7 @@ library
|
||||
, safe >=0.2
|
||||
, split >=0.1
|
||||
, tabular >=0.2
|
||||
, template-haskell
|
||||
, text >=1.2
|
||||
, time >=1.5
|
||||
, transformers >=0.2
|
||||
@ -221,8 +224,10 @@ test-suite doctests
|
||||
, doctest >=0.16
|
||||
, easytest
|
||||
, extra
|
||||
, file-embed >=0.0.10
|
||||
, filepath
|
||||
, hashtables >=1.2.3.1
|
||||
, here
|
||||
, megaparsec >=7.0.0 && <8
|
||||
, mtl
|
||||
, mtl-compat
|
||||
@ -234,6 +239,7 @@ test-suite doctests
|
||||
, safe >=0.2
|
||||
, split >=0.1
|
||||
, tabular >=0.2
|
||||
, template-haskell
|
||||
, text >=1.2
|
||||
, time >=1.5
|
||||
, transformers >=0.2
|
||||
@ -320,8 +326,10 @@ test-suite easytests
|
||||
, directory
|
||||
, easytest
|
||||
, extra
|
||||
, file-embed >=0.0.10
|
||||
, filepath
|
||||
, hashtables >=1.2.3.1
|
||||
, here
|
||||
, hledger-lib
|
||||
, megaparsec >=7.0.0 && <8
|
||||
, mtl
|
||||
@ -334,6 +342,7 @@ test-suite easytests
|
||||
, safe >=0.2
|
||||
, split >=0.1
|
||||
, tabular >=0.2
|
||||
, template-haskell
|
||||
, text >=1.2
|
||||
, time >=1.5
|
||||
, transformers >=0.2
|
||||
|
||||
@ -55,8 +55,10 @@ dependencies:
|
||||
- deepseq
|
||||
- directory
|
||||
- easytest
|
||||
- file-embed >=0.0.10
|
||||
- filepath
|
||||
- hashtables >=1.2.3.1
|
||||
- here
|
||||
- megaparsec >=7.0.0 && <8
|
||||
- mtl
|
||||
- mtl-compat
|
||||
@ -68,6 +70,7 @@ dependencies:
|
||||
- safe >=0.2
|
||||
- split >=0.1
|
||||
- tabular >=0.2
|
||||
- template-haskell
|
||||
- text >=1.2
|
||||
- time >=1.5
|
||||
- transformers >=0.2
|
||||
|
||||
@ -14,7 +14,6 @@ import System.Console.CmdArgs.Explicit as C
|
||||
|
||||
import Hledger
|
||||
import Hledger.Cli.CliOptions
|
||||
import Hledger.Cli.Utils (hereFileRelative)
|
||||
|
||||
closemode = hledgerCommandMode
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Close.md")
|
||||
|
||||
@ -24,57 +24,56 @@ import Prelude ()
|
||||
import "base-compat-batteries" Prelude.Compat
|
||||
import Data.ByteString (ByteString)
|
||||
import qualified Data.ByteString.Char8 as BC
|
||||
import Data.FileEmbed
|
||||
import Data.String
|
||||
import System.IO
|
||||
import System.IO.Temp
|
||||
import System.Process
|
||||
|
||||
import Hledger.Utils (first3, second3, third3)
|
||||
import Hledger.Utils (first3, second3, third3, embedFileRelative)
|
||||
|
||||
type Topic = String
|
||||
|
||||
docFiles :: [(Topic, (ByteString, ByteString, ByteString))]
|
||||
docFiles = [
|
||||
("hledger",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger.1" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger.info" >>= embedFile)
|
||||
($(embedFileRelative "embeddedfiles/hledger.1")
|
||||
,$(embedFileRelative "embeddedfiles/hledger.txt")
|
||||
,$(embedFileRelative "embeddedfiles/hledger.info")
|
||||
))
|
||||
,("hledger-ui",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-ui.1" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-ui.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-ui.info" >>= embedFile)
|
||||
($(embedFileRelative "embeddedfiles/hledger-ui.1")
|
||||
,$(embedFileRelative "embeddedfiles/hledger-ui.txt")
|
||||
,$(embedFileRelative "embeddedfiles/hledger-ui.info")
|
||||
))
|
||||
,("hledger-web",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-web.1" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-web.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-web.info" >>= embedFile)
|
||||
($(embedFileRelative "embeddedfiles/hledger-web.1")
|
||||
,$(embedFileRelative "embeddedfiles/hledger-web.txt")
|
||||
,$(embedFileRelative "embeddedfiles/hledger-web.info")
|
||||
))
|
||||
,("hledger-api",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger-api.1" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-api.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger-api.info" >>= embedFile)
|
||||
($(embedFileRelative "embeddedfiles/hledger-api.1")
|
||||
,$(embedFileRelative "embeddedfiles/hledger-api.txt")
|
||||
,$(embedFileRelative "embeddedfiles/hledger-api.info")
|
||||
))
|
||||
,("journal",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_journal.5" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_journal.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_journal.info" >>= embedFile)
|
||||
($(embedFileRelative "embeddedfiles/hledger_journal.5")
|
||||
,$(embedFileRelative "embeddedfiles/hledger_journal.txt")
|
||||
,$(embedFileRelative "embeddedfiles/hledger_journal.info")
|
||||
))
|
||||
,("csv",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_csv.5" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_csv.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_csv.info" >>= embedFile)
|
||||
($(embedFileRelative "embeddedfiles/hledger_csv.5")
|
||||
,$(embedFileRelative "embeddedfiles/hledger_csv.txt")
|
||||
,$(embedFileRelative "embeddedfiles/hledger_csv.info")
|
||||
))
|
||||
,("timeclock",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_timeclock.5" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timeclock.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timeclock.info" >>= embedFile)
|
||||
($(embedFileRelative "embeddedfiles/hledger_timeclock.5")
|
||||
,$(embedFileRelative "embeddedfiles/hledger_timeclock.txt")
|
||||
,$(embedFileRelative "embeddedfiles/hledger_timeclock.info")
|
||||
))
|
||||
,("timedot",
|
||||
($(makeRelativeToProject "embeddedfiles/hledger_timedot.5" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timedot.txt" >>= embedFile)
|
||||
,$(makeRelativeToProject "embeddedfiles/hledger_timedot.info" >>= embedFile)
|
||||
($(embedFileRelative "embeddedfiles/hledger_timedot.5")
|
||||
,$(embedFileRelative "embeddedfiles/hledger_timedot.txt")
|
||||
,$(embedFileRelative "embeddedfiles/hledger_timedot.info")
|
||||
))
|
||||
]
|
||||
|
||||
|
||||
@ -9,7 +9,6 @@ Hledger.Utils.
|
||||
|
||||
module Hledger.Cli.Utils
|
||||
(
|
||||
hereFileRelative,
|
||||
withJournalDo,
|
||||
writeOutput,
|
||||
journalTransform,
|
||||
@ -32,16 +31,12 @@ import Control.Exception as C
|
||||
import Control.Monad
|
||||
|
||||
import Data.Hashable (hash)
|
||||
import Data.FileEmbed (makeRelativeToProject)
|
||||
import Data.List
|
||||
import Data.Maybe
|
||||
import qualified Data.Text as T
|
||||
import qualified Data.Text.IO as T
|
||||
import Data.String.Here (hereFile)
|
||||
import Data.Time (Day, addDays)
|
||||
import Data.Word
|
||||
import Language.Haskell.TH.Quote (QuasiQuoter(..))
|
||||
import Language.Haskell.TH.Syntax (Q, Exp)
|
||||
import Numeric
|
||||
import Safe (readMay)
|
||||
import System.Console.CmdArgs
|
||||
@ -63,13 +58,6 @@ import Hledger.Read
|
||||
import Hledger.Reports
|
||||
import Hledger.Utils
|
||||
|
||||
-- XXX hereFile or embedFile ? QQ or TH ? does it matter ?
|
||||
-- | Embed the contents of a file, given a path relative to the current package.
|
||||
hereFileRelative :: FilePath -> Q Exp
|
||||
hereFileRelative f = makeRelativeToProject f >>= hereFileExp
|
||||
where
|
||||
QuasiQuoter{quoteExp=hereFileExp} = hereFile
|
||||
|
||||
-- | Parse the user's specified journal file(s) as a Journal, maybe apply some
|
||||
-- transformations according to options, and run a hledger command with it.
|
||||
-- Or, throw an error.
|
||||
|
||||
@ -4,7 +4,7 @@ cabal-version: 1.12
|
||||
--
|
||||
-- see: https://github.com/sol/hpack
|
||||
--
|
||||
-- hash: 2b1a58e0e13c29b497037f556b0bbe5836e1667dc222aafc546683392fd9c211
|
||||
-- hash: f7e09ce5d14e5c6c98b49831e7542ad9c40c969033841ca17e144a06bcda89cb
|
||||
|
||||
name: hledger
|
||||
version: 1.12.99
|
||||
@ -125,7 +125,6 @@ library
|
||||
, data-default >=0.5
|
||||
, directory
|
||||
, easytest
|
||||
, file-embed >=0.0.10
|
||||
, filepath
|
||||
, hashable >=1.2.4
|
||||
, haskeline >=0.6
|
||||
@ -145,7 +144,6 @@ library
|
||||
, shakespeare >=2.0.2.2
|
||||
, split >=0.1
|
||||
, tabular >=0.2
|
||||
, template-haskell
|
||||
, temporary
|
||||
, text >=0.11
|
||||
, time >=1.5
|
||||
@ -178,7 +176,6 @@ executable hledger
|
||||
, data-default >=0.5
|
||||
, directory
|
||||
, easytest
|
||||
, file-embed >=0.0.10
|
||||
, filepath
|
||||
, haskeline >=0.6
|
||||
, here
|
||||
@ -197,7 +194,6 @@ executable hledger
|
||||
, shakespeare >=2.0.2.2
|
||||
, split >=0.1
|
||||
, tabular >=0.2
|
||||
, template-haskell
|
||||
, temporary
|
||||
, text >=0.11
|
||||
, time >=1.5
|
||||
@ -233,7 +229,6 @@ test-suite test
|
||||
, data-default >=0.5
|
||||
, directory
|
||||
, easytest
|
||||
, file-embed >=0.0.10
|
||||
, filepath
|
||||
, haskeline >=0.6
|
||||
, here
|
||||
@ -252,7 +247,6 @@ test-suite test
|
||||
, shakespeare >=2.0.2.2
|
||||
, split >=0.1
|
||||
, tabular >=0.2
|
||||
, template-haskell
|
||||
, temporary
|
||||
, test-framework
|
||||
, test-framework-hunit
|
||||
@ -288,7 +282,6 @@ benchmark bench
|
||||
, data-default >=0.5
|
||||
, directory
|
||||
, easytest
|
||||
, file-embed >=0.0.10
|
||||
, filepath
|
||||
, haskeline >=0.6
|
||||
, here
|
||||
@ -308,7 +301,6 @@ benchmark bench
|
||||
, shakespeare >=2.0.2.2
|
||||
, split >=0.1
|
||||
, tabular >=0.2
|
||||
, template-haskell
|
||||
, temporary
|
||||
, text >=0.11
|
||||
, time >=1.5
|
||||
|
||||
@ -89,7 +89,6 @@ dependencies:
|
||||
- Decimal
|
||||
- directory
|
||||
- easytest
|
||||
- file-embed >=0.0.10
|
||||
- filepath
|
||||
- haskeline >=0.6
|
||||
- here
|
||||
@ -104,7 +103,6 @@ dependencies:
|
||||
- safe >=0.2
|
||||
- shakespeare >=2.0.2.2
|
||||
- split >=0.1
|
||||
- template-haskell
|
||||
- math-functions >=0.2.0.0
|
||||
- tabular >=0.2
|
||||
- temporary
|
||||
|
||||
Loading…
Reference in New Issue
Block a user