2016-08-09 17:24:41 +03:00
name : hledger-lib
2021-03-11 00:50:49 +03:00
version : 1.21 .99
2020-03-22 20:49:02 +03:00
synopsis : A reusable library providing the core functionality of hledger
2016-08-09 21:27:00 +03:00
description : |
2020-03-22 20:49:02 +03:00
A reusable library containing hledger's core functionality.
This is used by most hledger* packages so that they support the same
common file formats, command line options, reports etc.
hledger is a robust, cross-platform set of tools for tracking money,
time, or any other commodity, using double-entry accounting and a
simple, editable file format, with command-line, terminal and web
interfaces. It is a Haskell rewrite of Ledger, and one of the leading
implementations of Plain Text Accounting. Read more at :
<https://hledger.org>
2016-08-09 21:27:00 +03:00
2016-08-09 17:24:41 +03:00
category : Finance
2017-03-08 11:19:13 +03:00
license : GPL-3
2016-08-09 17:24:41 +03:00
author : Simon Michael <simon@joyful.com>
maintainer : Simon Michael <simon@joyful.com>
github : simonmichael/hledger
homepage : http://hledger.org
bug-reports : http://bugs.hledger.org
2017-08-26 02:53:41 +03:00
stability : stable
2020-06-07 21:50:41 +03:00
tested-with : GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5, GHC==8.8.3, GHC==8.10.0.20200123
2017-08-26 02:53:41 +03:00
2016-08-09 17:24:41 +03:00
extra-source-files :
2019-01-26 05:11:04 +03:00
- CHANGES.md
2020-03-22 19:07:47 +03:00
- README.md
2019-11-29 17:20:22 +03:00
- test/unittest.hs
- test/doctests.hs
2017-08-26 02:53:41 +03:00
2018-01-26 22:49:26 +03:00
#data-files:
2016-08-09 17:24:41 +03:00
dependencies :
2021-03-12 17:58:46 +03:00
- base >=4.9 && <4.16
lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11
fail is moving out of Monad and into it's own MonadFail class.
This will be enforced in GHC 8.8 (I think).
base-compat/base-compat-batteries 0.11.0 have adapted to this,
and are approaching stackage nightly
(https://github.com/commercialhaskell/stackage/issues/4802).
hledger is now ready to build with base-compat-batteries 0.11.0, once
all of our deps do (eg aeson). We are still compatible with the older
0.10.x and GHC 7.10.3 as well.
For now we are using both fails:
- new fail (from Control.Monad.Fail), used in our parsers, imported
via base-compat-batteries Control.Monad.Fail.Compat to work with
older GHC versions.
- old fail (from GHC.Base, exported by Prelude, Control.Monad,
Control.Monad.State.Strict, Prelude.Compat, ...), used in easytest's
Test, since I couldn't find their existing fail implementation to update.
To reduce (my) confusion, these are imported carefully, consistently,
and qualified everywhere as Fail.fail and Prelude.fail, with clashing
re-exports suppressed, like so:
import Prelude hiding (fail)
import qualified Prelude (fail)
import Control.Monad.State.Strict hiding (fail)
import "base-compat-batteries" Prelude.Compat hiding (fail)
import qualified "base-compat-batteries" Control.Monad.Fail.Compat as Fail
2019-09-09 03:13:47 +03:00
- base-compat-batteries >=0.10.1 && <0.12
2020-06-24 00:55:42 +03:00
- aeson >=1
2020-06-05 01:12:57 +03:00
- aeson-pretty
2020-07-14 22:08:36 +03:00
- ansi-terminal >=0.9
2016-08-09 17:24:41 +03:00
- array
- blaze-markup >=0.5.1
- bytestring
2018-08-16 08:16:09 +03:00
- call-stack
2017-12-31 20:13:50 +03:00
- cmdargs >=0.10
2016-08-09 17:24:41 +03:00
- containers
2018-09-07 20:12:13 +03:00
- cassava
- cassava-megaparsec
2016-08-09 17:24:41 +03:00
- data-default >=0.5
2020-03-19 20:10:55 +03:00
- Decimal >=0.5.1
2016-08-09 17:24:41 +03:00
- directory
2019-01-27 02:52:58 +03:00
- file-embed >=0.0.10
2016-08-09 17:24:41 +03:00
- filepath
2018-06-05 03:02:57 +03:00
- hashtables >=1.2.3.1
2020-09-07 03:17:55 +03:00
- megaparsec >=7.0.0 && <9.1
2019-12-02 19:23:00 +03:00
- mtl >=2.2.1
2016-08-09 17:24:41 +03:00
- old-time
2018-05-21 03:01:07 +03:00
- parser-combinators >=0.4.0
lib: replace pretty-show with pretty-simple
pretty-simple, already used in .ghci, will hopefully give nicer debug
output, including for values which don't have Read-able Show output.
This should mean that we can start removing custom string-like Show
instances that were a workaround for pretty-show.
We are using the latest version (4.0.0.0) to get compact output.
Here's some old pretty-show output:
CsvRules
{ rdirectives = [ ( "skip" , "1" ) ]
, rcsvfieldindexes = [ ( "date" , 1 ) , ( "amount" , 2 ) ]
, rassignments = [ ( "amount" , "%2" ) , ( "date" , "%1" ) ]
, rconditionalblocks = []
}
And the new pretty-simple output:
CsvRules
{ rdirectives=
[ ( "skip", "1" ) ]
, rcsvfieldindexes=
[ ( "date", 1 ), ( "amount", 2 ) ]
, rassignments=
[ ( "amount", "%2" ), ( "date", "%1" ) ]
, rconditionalblocks= []
}
Non-compact pretty-simple output would be:
CsvRules
{ rdirectives=
[
( "skip"
, "1B"
)
]
, rcsvfieldindexes=
[
( "date"
, 1
)
,
( "amount"
, 2
)
]
, rassignments=
[
( "amount"
, "%2"
)
,
( "date"
, "%1"
)
]
, rconditionalblocks=[]
}
Also:
- Account's Show instance no longer converts : to _ in account names
- drop unused pretty-show dependency from hledger, hledger-ui packages
- regenerate hledger-lib with the older hpack that's shipped in stack
2020-11-10 18:08:29 +03:00
- pretty-simple >4 && <5
2016-08-09 17:24:41 +03:00
- regex-tdfa
- safe >=0.2
2018-04-03 15:07:13 +03:00
- tabular >=0.2
2019-11-27 00:56:14 +03:00
- tasty >=1.2.3
- tasty-hunit >=0.10.0.2
2019-01-27 02:52:58 +03:00
- template-haskell
2017-12-31 20:13:50 +03:00
- text >=1.2
2017-08-26 02:56:41 +03:00
- time >=1.5
2019-08-01 19:24:40 +03:00
- timeit
2017-12-31 20:13:50 +03:00
- transformers >=0.2
2020-06-12 05:23:57 +03:00
- unordered-containers >=0.2
2016-08-09 17:24:41 +03:00
- uglymemo
2017-12-31 20:13:50 +03:00
- utf8-string >=0.3.5
2019-07-13 10:13:33 +03:00
- extra >=1.6.3
2018-07-23 12:39:01 +03:00
- Glob >= 0.9
2016-11-12 21:50:57 +03:00
# for ledger-parse:
2017-12-31 20:05:39 +03:00
#- parsers >=0.5
2017-03-30 07:00:16 +03:00
#- system-filepath
2017-12-31 20:05:39 +03:00
#- trifecta >=0.91
2017-08-26 02:53:41 +03:00
2016-08-09 17:24:41 +03:00
ghc-options :
- -Wall
- -fno-warn-unused-do-bind
- -fno-warn-name-shadowing
- -fno-warn-missing-signatures
- -fno-warn-type-defaults
- -fno-warn-orphans
2017-08-26 02:53:41 +03:00
2016-11-12 21:50:57 +03:00
source-dirs :
2017-03-30 07:00:16 +03:00
#- other/ledger-parse
2016-11-12 21:50:57 +03:00
- .
2017-08-26 02:53:41 +03:00
2016-08-09 17:24:41 +03:00
library :
exposed-modules :
- Hledger
- Hledger.Data
- Hledger.Data.Account
- Hledger.Data.AccountName
- Hledger.Data.Amount
- Hledger.Data.Commodity
- Hledger.Data.Dates
- Hledger.Data.Journal
2019-12-17 04:15:24 +03:00
- Hledger.Data.Json
2016-08-09 17:24:41 +03:00
- Hledger.Data.Ledger
- Hledger.Data.Period
2018-07-30 21:38:47 +03:00
- Hledger.Data.PeriodicTransaction
2016-08-09 17:24:41 +03:00
- Hledger.Data.StringFormat
- Hledger.Data.Posting
- Hledger.Data.RawOptions
- Hledger.Data.Timeclock
- Hledger.Data.Transaction
2018-07-30 21:38:47 +03:00
- Hledger.Data.TransactionModifier
2016-08-09 17:24:41 +03:00
- Hledger.Data.Types
2019-06-15 02:17:06 +03:00
- Hledger.Data.Valuation
2016-08-09 17:24:41 +03:00
- Hledger.Query
- Hledger.Read
- Hledger.Read.Common
- Hledger.Read.CsvReader
- Hledger.Read.JournalReader
2017-03-30 07:00:16 +03:00
# - Hledger.Read.LedgerReader
2016-08-09 17:24:41 +03:00
- Hledger.Read.TimedotReader
- Hledger.Read.TimeclockReader
- Hledger.Reports
- Hledger.Reports.ReportOptions
2018-04-03 15:06:52 +03:00
- Hledger.Reports.ReportTypes
2019-05-24 07:51:45 +03:00
- Hledger.Reports.AccountTransactionsReport
2016-08-09 17:24:41 +03:00
- Hledger.Reports.BalanceReport
2018-04-03 15:06:52 +03:00
- Hledger.Reports.BudgetReport
2016-08-09 17:24:41 +03:00
- Hledger.Reports.EntriesReport
2019-06-14 21:45:25 +03:00
- Hledger.Reports.MultiBalanceReport
2016-08-09 17:24:41 +03:00
- Hledger.Reports.PostingsReport
2019-05-24 08:12:12 +03:00
- Hledger.Reports.TransactionsReport
2016-08-09 17:24:41 +03:00
- Hledger.Utils
2017-04-26 04:27:25 +03:00
- Hledger.Utils.Color
2016-08-09 17:24:41 +03:00
- Hledger.Utils.Debug
- Hledger.Utils.Parse
- Hledger.Utils.Regex
- Hledger.Utils.String
- Hledger.Utils.Test
- Hledger.Utils.Text
- Hledger.Utils.Tree
- Hledger.Utils.UTF8IOCompat
2018-04-03 15:07:13 +03:00
- Text.Tabular.AsciiWide
2017-03-30 07:00:16 +03:00
# other-modules:
# - Ledger.Parser.Text
2017-08-26 02:53:41 +03:00
2019-11-29 17:20:22 +03:00
# "cabal test hledger-lib" currently fails, see doctest suite below
2016-08-09 17:24:41 +03:00
tests :
2018-03-06 04:27:13 +03:00
2019-11-29 17:20:22 +03:00
unittest :
2019-11-29 17:06:36 +03:00
buildable : true
source-dirs : test
2019-11-29 17:20:22 +03:00
main : unittest.hs
2019-11-29 17:06:36 +03:00
other-modules : [ ] # prevent double compilation, https://github.com/sol/hpack/issues/188
dependencies :
- hledger-lib
2020-03-07 05:18:15 +03:00
# Note when run by cabal, doctest requires a ghc environment file,
# so we ensure this is generated, see cabal.project.
# https://github.com/simonmichael/hledger/issues/1139
2019-11-29 17:20:22 +03:00
doctest :
2018-08-18 17:11:48 +03:00
source-dirs : test
2019-11-29 17:20:22 +03:00
main : doctests.hs # can't call it doctest.hs ("File name does not match module name")
2019-11-19 15:10:46 +03:00
other-modules : [ ] # prevent double compilation, https://github.com/sol/hpack/issues/188
2016-08-09 17:24:41 +03:00
dependencies :
2016-08-09 21:52:15 +03:00
- Glob >=0.7
2020-03-31 01:28:11 +03:00
# Need a doctest new enough to support --fast and --verbose and ghc 8.10.
- doctest >=0.16.3
2019-07-14 14:55:19 +03:00
# ghc 8.4+ on mac needs this workaround (see
# https://github.com/sol/doctest/issues/199,
# https://ghc.haskell.org/trac/ghc/ticket/15105#comment:10):
2018-09-07 21:21:32 +03:00
# ~$ locate HSinteger-gmp-1.0.2.0.o
# /Users/simon/.stack/programs/x86_64-osx/ghc-8.4.3/lib/ghc-8.4.2/integer-gmp-1.0.2.0/HSinteger-gmp-1.0.2.0.o
# ~$ mv /Users/simon/.stack/programs/x86_64-osx/ghc-8.4.3/lib/ghc-8.4.2/integer-gmp-1.0.2.0/HSinteger-gmp-1.0.2.0.o{,_DISABLE_GHC_ISSUE_15105}
2019-07-14 14:55:19 +03:00
# Should probably disable it by default:
2018-09-07 21:21:32 +03:00
#when:
# - condition: os(darwin) && impl(ghc >= 8.4)
# buildable: false
2018-03-06 04:27:13 +03:00
2020-03-19 21:14:24 +03:00
# ghc 8.0 on linux gives Hledger/Read/JournalReader.hs:126: failure in expression `rejp (journalp <* eof) "2015/1/1\n a 0\n"' ... Variable not in scope: rejp :: f0 a0 -> [Char] -> t
# must use one conditional here, https://github.com/sol/hpack/issues/379
2019-07-14 14:40:07 +03:00
when :
2020-03-31 01:28:11 +03:00
- condition : (impl(ghc < 8.2))
2019-07-14 14:40:07 +03:00
buildable : false