Commit Graph

258 Commits

Author SHA1 Message Date
Simon Michael
c1ab41f0a9 hledger, hledger-lib: support GHC 7.6 2012-10-08 16:52:07 +00:00
Simon Michael
00f22819ae balance report speedup
This refactoring fixes an O(n^2) slowdown in the balance command with
large numbers of accounts. It's now speedy, and the implementation is
clearer. To facilitate this, the Account type now represents a tree of
accounts which can easily be traversed up or down (and/or flattened
into a list).

Benchmark on a 2010 macbook:

    +-------------------------------------------++--------------+------------+--------+
    |                                           || before:      | after:     |        |
    |                                           || hledger-0.18 | hledgeropt | ledger |
    +===========================================++==============+============+========+
    | -f data/100x100x10.journal     balance    ||         0.21 |       0.07 |   0.09 |
    | -f data/1000x1000x10.journal   balance    ||        10.13 |       0.47 |   0.62 |
    | -f data/1000x10000x10.journal  balance    ||        40.67 |       0.67 |   1.01 |
    | -f data/10000x1000x10.journal  balance    ||        15.01 |       3.22 |   2.36 |
    | -f data/10000x1000x10.journal  balance aa ||         4.77 |       4.40 |   2.33 |
    +-------------------------------------------++--------------+------------+--------+
2012-10-21 17:18:18 +00:00
Simon Michael
f03b020e2f set version with CPP instead of cabal-file-th; make building more robust
hledger and hledger-web were reading their version number (and program
name) from their cabal files at compile time using cabal-file-th,
which allowed the version number be maintained in one place (per
package).

This meant you had to be in same directory as the cabal file when
building, which made life more complicated, eg emacs compilation mode
could not jump to errors. Also, it slowed down building slightly, and
is a factor in hledger Debian packages being unavailable on a number
of platforms (we also use TH for report templates).

Now, the build version is set with a CPP VERSION flag, which seems
simpler overall. For cabal builds, this needs to be configured
manually in a few more places in each cabal file. For makefile builds,
it is set it to the name of the most recent darcs tag (which should be
more useful than the old behaviour). If not set, it defaults to the
blank string, useful eg for haddock. And, all makefile builds now run
from the top directory.
2012-10-13 19:21:17 +00:00
Simon Michael
7fec954cbf support latest cmdargs, haskeline, split 2012-10-08 16:50:35 +00:00
Simon Michael
0b96a767b4 support tilde (~) in journal and rules file paths 2012-05-30 08:36:01 +00:00
Simon Michael
34318906d8 register, print: fix reverse ordering of same-day transactions 2012-06-29 18:06:58 +00:00
Simon Michael
6ccecb6ae0 stats: list included journal files 2012-05-30 09:17:18 +00:00
Simon Michael
ed1ea545f5 make --rules-file work again 2012-03-24 19:53:07 +00:00
Simon Michael
50068221c3 fix build warnings in all GHC versions 2012-03-29 21:19:35 +00:00
Simon Michael
31f3e4dc27 balance: accept "bal" without complaining about ambiguity with balancesheet 2012-04-14 20:33:15 +00:00
Simon Michael
3441c2d816 unneeded imports 2012-04-21 00:23:52 +00:00
Simon Michael
d30cd5847a a simplistic cashflow statement to complete the trio 2012-04-17 17:32:56 +00:00
Simon Michael
483eb09a82 show proper help for balancesheet/incomestatement 2012-04-14 20:33:48 +00:00
Simon Michael
b584f33cbb Cli, Cli.Test module doc updates 2012-05-09 15:29:14 +00:00
Simon Michael
b6e5028071 fix compiler warning 2012-05-16 06:40:52 +00:00
Simon Michael
294a350993 promote Hledger.Query to second level 2012-05-16 07:57:10 +00:00
Simon Michael
98274b481d more build warnings 2012-05-06 20:44:23 +00:00
Simon Michael
7f3b990394 docs: fix api docs 2012-03-07 16:05:04 +00:00
Simon Michael
2fb2aea056 rename metadata fields to tags 2012-05-27 22:59:06 +00:00
Simon Michael
3ee6a351f3 big query/tests/show refactoring
- use new query system for command line too, filterspec is no more
- move unit tests near the code they test, run them in bottom up order, add more
- more precise Show instances, used for debugging not ui
2012-05-27 18:14:20 +00:00
Simon Michael
1654776f4a refactor test runner 2012-05-14 19:23:12 +00:00
Simon Michael
db4d853a3f refactor: move readJournal' 2012-04-14 01:10:39 +00:00
Simon Michael
197f35cb5b unit test exposing sample journal parse failure 2012-05-09 15:30:43 +00:00
Simon Michael
a628964016 prepare to support full query expressions on command line 2012-05-16 08:31:06 +00:00
Simon Michael
88afea8c44 balancesheet: ignore start dates, always show the accurate balance from all transactions up to the specified end date 2012-04-17 02:28:30 +00:00
Simon Michael
65a20c6870 separate account types in balancesheet, show totals with consistent layout 2012-04-16 16:55:30 +00:00
Simon Michael
1e2c2bb10c hook up more tests, begin converting remaining reports to Query 2012-05-17 04:21:34 +00:00
Simon Michael
a58a5f96ad more robust comments & metadata, on postings too, and document as "tags" 2012-05-14 18:52:22 +00:00
Simon Michael
88212f26e8 simplify journal parser names 2012-05-09 15:34:05 +00:00
Simon Michael
e1b1b8bce8 rename Matcher to Query, simplify constructors 2012-05-16 07:12:49 +00:00
Simon Michael
8c7eea9ee0 make incomestatement respect options 2012-04-16 16:45:24 +00:00
Simon Michael
b4b2b67236 incomestatement: show revenue and expense accounts separately 2012-04-15 00:05:10 +00:00
Simon Michael
abb470aadb use shakespeare-text to help lay out incomestatement's output 2012-04-14 20:35:51 +00:00
Simon Michael
a27eb7c29f more matcher -> query renaming 2012-05-16 07:37:24 +00:00
Simon Michael
8492f6cae4 fix unicode handling on GHC >= 7.2, unify utf8 IO compatibility layer
tests pass again from GHC 6.12.3 to 7.4.1
2012-03-29 19:06:31 +00:00
Simon Michael
ca5d5020e1 prototypical incomestatement and balancesheet commands 2012-04-14 01:34:56 +00:00
Simon Michael
b96e3ac85d drop convert command 2012-03-24 19:40:06 +00:00
Simon Michael
00a43cd1bf Hledger.Cli.Format -> Hledger.Data.FormatStrings 2012-03-10 19:20:15 +00:00
Simon Michael
a1297daae2 cashflow: forgot th' module 2012-04-17 18:27:28 +00:00
Simon Michael
e396c0dc8d push csv rule and format string types down 2012-03-24 01:58:34 +00:00
Simon Michael
6eb7ad28e1 refactor/beef up readJournal/readJournalFile 2012-03-23 16:21:41 +00:00
Simon Michael
13e0757670 less obscure error when the journal file path contains a tilde 2012-01-03 12:12:37 +00:00
Simon Michael
26ad00a659 support and require latest cmdargs 2012-01-05 18:25:15 +00:00
Simon Michael
1bc4d4b395 refactor: clarify mixed amount normalising a bit 2012-01-01 00:39:13 +00:00
Dmitry Astapov
7426e93ec6 Testcase+fix for commodity being reported more than once per account in balance 2011-12-25 21:21:27 +00:00
Simon Michael
0d8a7c935b fix import warning 2012-02-02 05:27:07 +00:00
Simon Michael
c686645fab refactor: update version number handling 2012-01-31 06:01:31 +00:00
Simon Michael
db7f4d1b3d use cabal-file-th to get executable name and version from cabal files 2011-10-19 19:53:42 +00:00
Simon Michael
4fb325b92a bump version 2011-10-04 23:53:50 +00:00
Simon Michael
9a6328adeb comment 2011-09-14 19:46:31 +00:00
Simon Michael
33f6277e0d cli: hledger ADDONCOMMAND --version now shows add-on command's version 2011-09-14 02:32:44 +00:00
Simon Michael
fcb4a39089 when running addons with --debug, show the command line 2011-09-17 04:19:26 +00:00
Simon Michael
6ca155edc0 convert: don't reverse order of transactions 2011-09-19 03:10:16 +00:00
Simon Michael
353e3f2d55 convert: always order converted transactions by date 2011-09-21 06:04:18 +00:00
Simon Michael
de502e732b drop unused TIMELOG env var 2011-09-21 23:12:53 +00:00
Simon Michael
556e3c9246 cli: give literal tilde error also with -f 2011-09-21 23:10:44 +00:00
Simon Michael
f79b272ff3 balance: ledger compatibility fix: don't elide parent accounts with multiple displayed subaccounts 2011-09-22 20:40:06 +00:00
Simon Michael
6ddf394119 add: clearer prompts, more validation, use . to end as well 2011-09-23 03:51:45 +00:00
Simon Michael
17b1fcefed rename/update doc 2011-09-23 14:09:12 +00:00
Simon Michael
c9f1f5c663 strip the -- when calling addon commands, so their options work (#64) 2011-09-23 14:10:27 +00:00
Simon Michael
fffb15c1ae add: avoid excess whitespace between transactions (#46) 2011-09-25 17:47:55 +00:00
Simon Michael
9b2a5f56e1 only the add and web commands auto-create the journal file 2011-09-23 03:53:14 +00:00
Simon Michael
992ce48093 convert: use full option name in error message 2011-09-27 23:54:49 +00:00
Simon Michael
780dc878c7 convert: currency -> base-currency 2011-09-27 23:55:07 +00:00
Simon Michael
7d3b1f4a55 convert: in-field, out-field -> amount-in-field, amount-out-field 2011-09-28 00:13:42 +00:00
Simon Michael
fe6f37753f convert: give an error instead of a silent zero amount from amount-in-field/amount-in-field 2011-09-28 00:14:42 +00:00
Simon Michael
9a0a0be01c docs: whitespace 2011-09-23 14:27:26 +00:00
Simon Michael
602ccceeec convert: give a useful error, not a null date when parsing fails; refactor 2011-09-28 17:12:43 +00:00
Simon Michael
5eeadad160 add: refactor, note default precision issue 2011-09-30 23:26:11 +00:00
Simon Michael
b0b1f7d733 bump version 2011-10-01 17:17:02 +00:00
Simon Michael
fa5f09f06a handle multiple filter patterns on the command-line again 2011-09-11 20:37:04 +00:00
Simon Michael
b46ffbac14 don't give a confusing error with -f and no command 2011-09-11 21:35:06 +00:00
Simon Michael
8a50cb1289 don't pass an addon command's name to it as an extra argument 2011-09-11 21:48:13 +00:00
Simon Michael
f37d7b5659 bump version 2011-09-12 22:52:24 +00:00
Simon Michael
4db6c2881a cli: fix an accidental parsec 3 dependency 2011-09-02 18:52:44 +00:00
Simon Michael
c834f4a8af bump version for all but hledger-lib, due to hledger fix 2011-09-02 19:25:31 +00:00
Simon Michael
ae02ca68dd doctest comment fix 2011-04-23 14:54:26 +00:00
Simon Michael
171c0e73ea convert: fix recent breakage causing zero amounts 2011-05-31 22:09:05 +00:00
Simon Michael
c562412964 convert: fix amount-field/in-field/out-field validation 2011-06-02 21:23:53 +00:00
Simon Michael
3617bc1a79 convert: fix --rules warning 2011-06-02 22:37:45 +00:00
Simon Michael
5784587208 convert: warn if there is neither amount-field or in & out-field 2011-06-02 22:56:17 +00:00
Simon Michael
92777edc99 docs: haddock tweaks 2011-04-29 03:25:52 +00:00
Simon Michael
a44aa8d7d2 refactor: remove unnecessary LANGUAGE CPP pragmas 2011-07-17 23:29:57 +00:00
Simon Michael
cbb0fc5c59 move basic reports into hledger-lib 2011-08-15 22:59:06 +00:00
Simon Michael
85f83c00fc drop some old base 3 support 2011-08-15 22:59:15 +00:00
Simon Michael
02a43f1e40 slightly improve help layout 2011-08-19 18:28:50 +00:00
Simon Michael
e005625780 web: account register now obeys --cost and --effective flags like the rest 2011-08-19 18:30:03 +00:00
Simon Michael
17fbc9de14 another part of add-on command detection that was missed 2011-08-25 23:13:08 +00:00
Simon Michael
dc43ca2d00 easier to roll back this one than merge 2011-08-22 14:52:47 +00:00
Simon Michael
b39c0f8819 would like to react to --version before --help, cmdargs does it first though 2011-08-20 19:18:10 +00:00
Simon Michael
4e91387ab3 fix a warning 2011-08-25 23:14:12 +00:00
Simon Michael
e67c63dc54 don't fail if PATH is not defined 2011-08-25 23:50:34 +00:00
Simon Michael
ec9e06e33e don't fail when PATH contains bad directories 2011-08-25 23:36:25 +00:00
Simon Michael
7616ed9b8e haddocks 2011-08-26 00:46:52 +00:00
Simon Michael
96628feee9 make the old ledger-compatible command names primary for now 2011-08-28 19:49:26 +00:00
Clint Adams
5ead6d05b1 update to cmdargs 0.8 API
Between 0.7 and 0.8, modeArgs changed from

modeArgs :: Maybe (Arg a)

to

modeArgs :: ([Arg a], Maybe (Arg a))
2011-08-30 21:41:25 +00:00
Simon Michael
b2e80554e6 convert: convert stdin when no csv file is specified 2011-08-20 19:59:20 +00:00
Simon Michael
464d8d4bcb hledger now detects and runs hledger-* add-ons found in path; many options cleanups 2011-08-22 14:55:39 +00:00
Simon Michael
98509d4bbc fix a bogus error with -f and no command 2011-08-16 22:23:05 +00:00
Simon Michael
3fa9fab9a4 fix warning 2011-08-19 19:20:43 +00:00