Commit Graph

260 Commits

Author SHA1 Message Date
Stephen Morgan
1c402edb06 pkg!: Remove Hledger.Data.Commodity module.
There are no modules which depend on Hledger.Data.Commodity which don't
also depend on Hledger.Data.Amount. Though Hledger.Data.Amount is a very
large module and might be broken up, Hledger.Data.Commodity only defines
three very small functions which are used, and so can be combined with
little cost.
2021-08-30 15:57:33 -10:00
Stephen Morgan
a0f9d7560f pkg!: Remove Hledger.Utils.Color module.
This module was only used in one place in Hledger.Data.Amount. The code
has been moved directly into Hledger.Utils.
2021-08-30 15:57:33 -10:00
Stephen Morgan
f1994d5aa8 pkg!: Remove Hledger.Utils.Tree module.
This very small module was only used in Hledger.Data.Account, so the
code was moved into that module instead.
2021-08-30 15:57:33 -10:00
Stephen Morgan
1ed06f3bc8 pkg!: Remove Hledger.Utils.UTF8IOCompat module.
This module does nothing beyond define error' and usageError, which have
been moved to Hledger.Utils.
2021-08-30 15:57:33 -10:00
Stephen Morgan
c784da3d0c dev: lens: Create a Template Haskell helper for generating classy lenses
for hledger options.

This works for BalancingOpts, InputOpts, ReportOpts, ReportSpec, and CliOpts.
2021-08-28 19:12:04 -10:00
Stephen Morgan
4576f8effd pkg!: Migrate the last of old-time over to time, changing ClockTime to
POSIXTime.

This eliminates old-time, which has been deprecated for a while, from
our dependencies.

This introduces a slight incompatibility, as a small number of functions
now take/return POSIXTime instead of ClockTime. Generally you will be
using the current time, in which case you should use getPOSIXTime from
Data.Time.Clock.POSIX instead of getClockTime.

utcTimeToClockTime has been removed, as it is now equivalent to
utcTimeToPOSIXSeconds from Data.Time.Clock.POSIX.
2021-08-19 17:47:19 -10:00
Arjen Langebaerd
3426030a91 feat: added commodity style commandline option 2021-08-17 22:05:29 -10:00
Simon Michael
f51ea92cfc deps: require base >=4.11, prevent red squares on hackage matrix
We officially support GHC 8.6+ (and 8.8+ for hledger-web) now.
Hackage matrix builder shows all packages building successfully
with GHC 8.4+, somehow, so we'll adjust the base bound to
allow that but prevent any attempts to build with older GHCs,
2021-08-03 21:05:02 -10:00
Simon Michael
2a39497e21 pkg: add tested-with GHC 9.0.1 2021-08-03 20:52:05 -10:00
Simon Michael
6665ddfb9b ;pkg: bump version to 1.22.99 2021-08-03 00:24:20 -10:00
Stephen Morgan
4e9db4e377 dev: lens: Introduce lenses for ReportOpts and ReportSpec. 2021-07-30 09:27:39 -10:00
Stephen Morgan
f673e7c2eb lib!: lib,web: Remove unused TransactionReport. Move the useful utility
functions to AccountTransactionsReport.

If you use transactionsReport, you should either use entryReport if you
don't require a running total, or using accountTransactionsReport with
thisacctq as Any or None (depending on what you want included in the
running total).
2021-07-22 19:00:37 -10:00
Simon Michael
861c34484e test: skip doctests with GHC 9 for now (#1503, #1615) 2021-07-20 20:38:39 -10:00
Simon Michael
3ef9958041 test: doctest cleanups, use latest 2021-07-20 20:38:39 -10:00
Simon Michael
9aac520edd deps: allow megaparsec 9.1 2021-07-20 20:38:39 -10:00
Simon Michael
544450f557 ;bump version to 1.22 2021-06-28 22:37:47 -10:00
Simon Michael
58b481ca5b stack: updated tested-with to 8.6+ 2021-06-03 14:07:39 -10:00
Simon Michael
ba1e91c302 drop support for GHC 8.0
Prior to this commit,
- hledger still builds with GHC 8.0
- hledger-ui does if you use the build plan specified by stack8.0.yaml,
  but you are likely to hit problems if you let cabal pick one
  (https://github.com/jtdaugherty/vty/issues/198 and others)
- hledger-web might, if you could find the right build plan

The hassles are enough and GHC 8.0 is old enough (first released in
2016) that I'm letting it go; 8.2 is the new minimum version for all
hledger packages.

This allows a bunch of cleanups to conditional imports, which I leave
for later.

Also, updated the tested-with minor versions.
2021-04-04 07:54:22 -10:00
Simon Michael
4e644840bc lib, etc: add now-required lower bound on containers (#1514) 2021-03-29 08:19:28 -07:00
Simon Michael
36cbc2b068 bump base upper bound to allow GHC 9.0 2021-03-12 06:58:46 -08:00
Simon Michael
e050790d4c ;bump version to 1.21.99 2021-03-10 13:50:49 -08:00
Simon Michael
eeddfc2509 ;bump version to 1.21 2021-03-10 08:24:58 -08:00
Stephen Morgan
541c4fc18c lib,cli: Use Text for CSV values. 2021-01-02 15:08:09 +11:00
Simon Michael
a7e9e9ac0e doc: merge file format manuals into the hledger manual
Also flatten the journal manual topics a bit.

There are pros and cons to this, but I believe the pros outweigh the
cons.
2020-12-24 10:22:05 -08:00
Simon Michael
df5c755d96 ;lib, cli: remove old unused parsec dependency 2020-12-15 08:33:05 -08:00
Simon Michael
9087532b62 ;bump version to 1.20.99 2020-12-14 11:28:07 -08:00
Simon Michael
2501329f3c ;bump version to 1.20 2020-11-30 15:18:24 -08:00
Simon Michael
221a6d9001 lib: new more robust price lookup implementation, fixing #1402 2020-11-23 18:08:41 -08:00
Simon Michael
a97daaf322 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 08:06:11 -08:00
Simon Michael
a151bcaec7 ; bump hledger-lib, hledger, hledger-ui, hledger-web version to 1.19.99 2020-09-07 12:16:12 -07:00
Simon Michael
8599eda37c allow megaparsec 9 2020-09-07 11:41:57 -07:00
Simon Michael
3170cc7cbd bump version to 1.19 2020-09-01 20:27:17 -07:00
Stephen Morgan
2cd7877c46 lib: Remove unnecessary NFData instances. 2020-08-31 15:41:36 +10:00
Simon Michael
3452270241 cli: --color/--colour option; smart emacs, windows autodetection (#1296) 2020-07-14 12:08:36 -07:00
Simon Michael
e090e0f949 add lower bound needed for aeson, to help cabal (#1268) 2020-06-23 14:55:42 -07:00
Stephen Morgan
0dcfddd201 lib: multiBalanceReport: Break calculateAccountChanges and acctChangesFromPostings separate functions. 2020-06-22 21:43:30 +10:00
Simon Michael
24996caaeb bump to dev version 2020-06-21 10:35:52 -07:00
Simon Michael
b389ee98dd ;update tested-with 2020-06-07 11:59:36 -07:00
Simon Michael
19020939c9 ;bump versions to 1.18 2020-06-06 17:18:15 -07:00
Simon Michael
d963944c99 lib: add jsonPrettyText helper, depend on aeson-pretty 2020-06-04 15:12:57 -07:00
Simon Michael
216cf8d596 ;enable doctest with ghc 8.10 2020-03-30 15:28:11 -07:00
Simon Michael
c6951bf7c6 ;doc: more tweaks to package readmes, hackage descriptions 2020-03-22 10:49:02 -07:00
Simon Michael
9ca8d7cea9 ;update tested-with 2020-03-22 09:27:50 -07:00
Simon Michael
617c2ecbc5 ;doc: consistent markdown readmes for packages 2020-03-22 09:07:47 -07:00
Simon Michael
5f2db97016 ;lib: disable doctest with GHC 8.10 for now (sol/doctest#246) 2020-03-19 11:37:55 -07:00
Simon Michael
96b4f0be4f require newer Decimal, math-functions, fixing inconsistent rounding
Decimal 0.5.1+ changed to banker's rounding (round to nearest even
number), and math-functions 0.3.3.0 (used by roi) fixed various
precision-related issues. Now we require the latest versions of these.
This was causing some functional test failures when building with old
GHCs/snapshots.
2020-03-19 10:10:55 -07:00
Simon Michael
1883ff4499 bump to dev version 2020-03-07 15:06:18 -08:00
Simon Michael
3565f49acf ;re-enable doctest suite, with a workaround for cabal 3 (#1139) 2020-03-06 18:30:32 -08:00
Simon Michael
2ea66bcda4 ;lib: bump version to 1.17.0.1
hledger's first use of the fourth version component.
[ci skip]
2020-03-01 22:06:55 -08:00
Simon Michael
ba44d00bed ;bump version to 1.17 2020-03-01 17:29:01 -08:00
Simon Michael
889767f1bd ;bump tested-with
[ci skip]
2020-03-01 17:28:43 -08:00
Simon Michael
7011160bfd ;allow base 4.14/GHC 8.10 2020-01-26 08:12:25 -08:00
Simon Michael
445e8aa3cc add support for megaparsec 8 (#1175) 2020-01-14 09:54:06 -08:00
Simon Michael
cfb2a61ae1 ;bump to dev version; bump man page dates
[ci skip]
2020-01-05 09:04:50 -08:00
Simon Michael
46d516e7a3 move JSON instances from hledger-web to hledger-lib 2019-12-16 17:17:00 -08:00
Simon Michael
093dca570d lib, cli, web: bump version to 1.16.1 2019-12-03 08:41:44 -08:00
Simon Michael
0ce890e5ff lib, cli, web: drop unnecessary mtl-compat dependency 2019-12-02 08:23:00 -08:00
Simon Michael
87d0491103 ;bump version to 1.16 2019-12-01 10:03:58 -08:00
Simon Michael
4b66bc2ed9 lib: disable doctest suite again till we can run it with cabal (#1139) 2019-12-01 09:13:18 -08:00
Simon Michael
caf8cdf0ca ;test: consistent singular naming for test suites and files 2019-11-29 06:35:29 -08:00
Simon Michael
c7574b8005 ;lib, cli: test suite cleanups, don't run hledger-lib tests twice 2019-11-29 06:11:25 -08:00
Simon Michael
ebedae01cf ;cabal: remove special cases for unsupported GHC 7 2019-11-28 14:59:18 -08:00
Simon Michael
08951ac3e8 ;cabal: add ghc 8.8 to tested-with
[ci skip]
2019-11-28 14:59:10 -08:00
Simon Michael
ca4fade4af ;tests: re-add hledger-lib's tests to the cabal file, as unittests 2019-11-28 14:45:10 -08:00
Simon Michael
13a3542464 tests: port all unit tests to tasty, first cut (#1090)
easytest is not actively maintained and requires an old version of
hedgehog which does not support base-compat 0.11 & ghc 8.8.

This is still using the old easytest helpers, and not displaying test
names properly.
2019-11-27 12:43:43 -08:00
Simon Michael
f0b2eed6c2 ;lib: clarify test suites recompilation workaround (#1125)
[ci skip]
2019-11-19 04:10:46 -08:00
Mykola Orliuk
f82ed83153 ;lib: re-enable easytests 2019-11-19 03:58:56 -08:00
Mykola Orliuk
097486a247 ;lib: re-enable doctests 2019-11-19 03:58:56 -08:00
Simon Michael
24ce2686f4 drop GHC 7.10/base 4.8 support, finally, due to MonadFail hassles
in JournalReader.hs. If you still need this, feel free to work on
those errors. But hopefully not, because dropping base 4.8 should
permit some code cleanups.
2019-09-14 03:45:37 -07:00
Simon Michael
977d4f009e lib, cli: disable hledger-lib test suites, hledger benchmark suite
by default. hledger-lib's doctests and easytests test suites (each ?)
require an additional slow rebuild of hledger-lib and are not worth
the time, energy and carbon. hledger's test suite runs those same
easytest tests (but not the doctests).
2019-09-14 03:45:37 -07:00
Simon Michael
f65fc47185 ;bump version to 1.15.99
[ci skip]
2019-09-13 08:43:33 -07:00
Simon Michael
acd7010e5a ;doc: "curses-style interface" -> "terminal interface"
[ci skip]
2019-09-10 18:14:16 -07:00
Simon Michael
499e20c0b2 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-08 17:13:47 -07:00
Simon Michael
cd5af48165 lib, cli: bump version to 1.15.2 2019-09-05 15:35:19 -07:00
Simon Michael
08e011af37 lib: note doctests fix (omitted from 1.15), bump to 1.15.1 2019-09-02 12:25:29 -07:00
Simon Michael
29f7654c3a bump versions to 1.15 2019-09-01 08:53:06 -07:00
Simon Michael
c14f22b975 ;lib: depend on timeit
Allows easy benchmarking at ghci prompt and I expect will be used for
reporting timing info later.
2019-08-01 18:31:39 +02:00
Simon Michael
e560afccd2 ;lib: package.yaml comment cleanups
[ci skip]
2019-07-15 17:18:28 +01:00
Simon Michael
a5372168bc ;lib: suppress doctest failures with GHC < 8.2
[ci skip]
2019-07-14 04:40:07 -07:00
Simon Michael
6f2f8d7638 ;deps: a better fix for nubSortBy with ghc 7.10, 8.0
nubSortBy and nub . sortBy are not equivalent, it seems.
I didn't notice the failing valuation func tests.
2019-07-13 00:13:33 -07:00
Simon Michael
40dd5e41cb ;deps: bump fgl lower bound to fix ghc 7, 8.0 builds 2019-07-12 15:25:19 -07:00
Simon Michael
a6e9b11a54 ;cabal: bump tested-with, regen cabal files
[ci skip]
2019-07-12 23:24:10 +01:00
Simon Michael
69defd497f ;lib: refactor: Data.Prices -> Data.Valuation 2019-06-14 19:04:09 -07:00
Simon Michael
baa15d9bea ;lib: rename MultiBalanceReports.hs -> MultiBalanceReport.hs 2019-06-14 11:45:25 -07:00
Simon Michael
ce0354ddbe lib: -X/--exchange now supports indirect price chains (#131)
Adds fgl as a dependency.
2019-06-13 15:50:01 -07:00
Simon Michael
34a0ad00b1 ;lib: encapsulate Prices db 2019-05-25 05:29:34 -07:00
Simon Michael
20bc386b80 restore TransactionsReport
hledger-web's register chart uses it, I didn't see it
because it's called from a hamlet template.
2019-05-23 22:15:40 -07:00
Simon Michael
54c1529638 lib: drop TransactionsReport, BalanceHistoryReport
They seem unused.
2019-05-23 21:55:19 -07:00
Simon Michael
04a30fa084 lib: TransactionsReport/AccountTransactionsReport cleanup
Split them into separate files, rename journalTransactionsReport to
transactionsReport.
2019-05-23 21:55:19 -07:00
Simon Michael
c9e16b83ef ; propagate dev version bump 2019-03-20 17:13:59 -07:00
Hans-Peter Deifel
489b7fd870 Constrain easytest dependency to fix cabal build
This constraints the easytest dependency to <0.3, because hledger and
hledger-lib currently don't build with 0.3.

Of course the better solution would be to fix the build errors, but easytest-0.3
is not even in stackage nightly yet and I just need it to build right now :-)
2019-03-15 12:33:16 -07:00
Simon Michael
68e5c41d52 bump version, manual dates
[ci skip]
2019-03-01 16:11:15 -08:00
Simon Michael
9bb6f75bc8 update tested-with, add ghc 8.6
[ci skip]
2019-03-01 15:10:42 -08:00
Simon Michael
94753f1cea bump to dev version 2019-02-08 11:33:44 -08:00
Simon Michael
a18e4e9773 hpack: drop quotes from version: field, apparently not required
[ci skip]
2019-02-05 06:35:40 -08:00
Simon Michael
6553353bc5 lib, cli: bump version to 1.13.1 2019-02-02 20:21:35 -08:00
Simon Michael
86d5652e53 stop depending on here due to slow haskell-src-meta/stackage issues
Using file-embed or ordinary literals instead, for now.
2019-02-02 16:34:10 -08:00
Simon Michael
40d1572359 bump version to 1.13 2019-02-01 17:19:19 -08:00
Simon Michael
550aa408eb lib: refactor, add embedFileRelative 2019-01-26 15:52:58 -08:00
Simon Michael
01c6f3e665 doc: changelogs: rename to CHANGES.md
These have been an adhoc mixture of plain text, markdown and org, and
used in each mode at different times. They will now have a definite
format, which for now is markdown. Org was another contender.

[ci skip]
2019-01-25 18:12:33 -08:00