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