Commit Graph

1713 Commits

Author SHA1 Message Date
Simon Michael
8b2efe3c33 ;imp: demo: help updates 2023-03-17 00:53:30 -10:00
Simon Michael
bbb58c3804 imp: demo: Watching the built-in demos (demo) 2023-03-17 00:09:24 -10:00
Simon Michael
b9273a4585 imp: cli: move OTHER last in commands list 2023-03-16 23:20:14 -10:00
Simon Michael
98865d6025 imp: demo: split print / balance demos 2023-03-16 23:20:14 -10:00
Simon Michael
6777182c70 imp: demo: output cleanups 2023-03-16 23:20:14 -10:00
Simon Michael
2d496609bc imp: demo: hide the file names 2023-03-16 23:20:14 -10:00
Simon Michael
7e422cb12a ;doc: update CLI help text files 2023-03-16 21:58:39 -10:00
Simon Michael
38fd51b97c feat: embed some asciinema demos, and a demo command to play them 2023-03-16 21:58:38 -10:00
Simon Michael
70ef3e816c fix: stats: fix a regression in date display since 1.28 (#2012) 2023-03-16 14:52:37 -10:00
Simon Michael
62bb93af9c imp: lib: Hledger.Cli.Script: more re-exports
added:
Control.Applicative
Control.Concurrent
Data.Char
Data.Functor
System.IO
System.IO.Error
2023-03-16 14:36:29 -10:00
Simon Michael
d012384d57 ;dev: cli: also build with GHC 9.6.1 2023-03-14 10:49:58 -10:00
Yehoshua Pesach Wallach
7ddcf3b9e1 fix: doc: remove duplicate in hledger close docs 2023-03-13 09:23:18 -10:00
Simon Michael
af38121442 imp: areg: when restricted by extra query args, show a hint in title
I was confused when using 'areg ACCT QUERY'. Now, the title will show
" (matching query)" as a hint when a QUERY is specified,
except when it is a date restriction (which is common and not confusing)
or a depth restriction (which is ignored).
2023-02-21 08:29:59 -10:00
Simon Michael
25b8d51ff2 activity: fix output after #1982; add tests 2023-02-21 07:17:21 -10:00
Simon Michael
70539a70bd ;cli: consolidate commands overvinew; sync commands list 2023-02-21 00:35:14 -10:00
Simon Michael
4d66f48a47 ;doc: update CLI help text files 2023-02-21 00:16:46 -10:00
Simon Michael
2e6cf0e806 ;imp: cli: commands list: better hledger-fifo entries 2023-02-20 22:15:58 -10:00
Simon Michael
c74f72ff40 ;imp: cli: commands list: add an entry for hledger-fifo 2023-02-20 21:58:13 -10:00
Simon Michael
0db44f11bb ;doc: update CLI usage texts 2023-02-20 16:24:54 -10:00
Simon Michael
2eaab54426 imp: close: more useful defaults, retain/migrate/open modes 2023-02-20 16:24:54 -10:00
Simon Michael
173f61bee0 dev: Commands: cleanup, fix harmless bug in command finding 2023-02-20 16:24:54 -10:00
Simon Michael
0567935e4b cli: simplify command doc inclusion, give them normal heading structure 2023-02-20 16:24:54 -10:00
Simon Michael
81f596b1fb cli: fix some Commands file permissions 2023-02-20 16:24:54 -10:00
Michael Grünewald
4b43e63a89 fix: cli: don't crash multicol with few strings
When there are only few, short strs and width is large, then the div
operation in itemspercol would return zero, triggering and error in
chunksOf.

This fix makes numcols have always at least as many entries as strs,
filling one line.
2023-02-19 11:52:46 -10:00
Simon Michael
fa70f160ae imp: partial/inferred dates are flexible, full dates are not (#1982)
DateSpans are now now aware of exact/flexible dates.
2023-02-17 07:24:19 -10:00
Simon Michael
7a9b0fd94c feat: check: the tags check checks tag names 2023-02-16 11:56:22 -10:00
Simon Michael
8aca6ff84b ;doc: import: tweak 2023-02-16 04:37:45 -10:00
Simon Michael
e34a20f3db ;doc: import: note a pitfall with multifile import 2023-02-15 20:09:20 -10:00
Jonathan Dowland
15eadd58ce feat: aregister: implement HTML output formatter (#1996)
The HTML formatter outputs a HTML snippet containing a table with a
header row and one data row per report item. The header row names
match those for the CSV output formatter. Multiple commodities in
a report item are listed together in the same cell separated by
commas, again matching the CSV formatter.

A future extension could be to explore using multiple rows for
multiple commodities, with HTML row spanning.

Fixes #1996.

Signed-off-by: Jonathan Dowland <jon@dow.land>
2023-02-09 10:53:09 -10:00
Simon Michael
9106c9013f ;doc: bal: budget: fix lists 2023-02-04 14:54:54 -10:00
Simon Michael
3fea3b0db7 ;doc: bal: budget: compare with forecasting; add some tips 2023-02-04 14:47:01 -10:00
Simon Michael
b8e538a57f ;doc: bal: --budget: clarify use of print --forecast 2023-02-04 10:37:14 -10:00
Simon Michael
513b6b5164 ;doc: check: adjacentconversionpostings was dropped 2023-02-04 08:03:54 -10:00
Simon Michael
da5b4667df ;doc: rename directive sections, fix many links 2023-02-04 08:01:47 -10:00
Simon Michael
89b699e78e ;doc: cli: fix all links to Journal > Tags / Commands > tags 2023-02-04 07:05:58 -10:00
Simon Michael
4eeafdc4d3 dev: delete strange old remnant of the checkdates command, causing HLS trouble 2023-02-04 06:42:05 -10:00
Simon Michael
3f3401f8ad imp: cli: Hledger.Cli.Script convenience import for scripts
Hledger.Cli.Script is a convenient prelude for use in scripts,
reducing import boilerplate. It currently re-exports:

Control.Monad
Data.Either
Data.List
Data.Maybe
Data.Ord
Data.Time
Text.Printf hiding (formatString)
Data.Text (Text, pack, unpack)
Safe hiding (at)
System.Directory
System.Environment
System.Exit
System.FilePath
System.Process
Hledger
Hledger.Cli
Hledger.Cli.Main (argsToCliOpts)

but not (much of) Data.Text or Data.Text.IO, as those
need to be imported qualified.
2023-01-29 16:29:18 -10:00
Simon Michael
53efb49c77 fix: cli: use black or white for banner & version, maximising legibility 2023-01-27 17:01:06 -10:00
Simon Michael
eed8a06906 fix: cli: don't highlight help when TERM=dumb 2023-01-27 06:06:17 -10:00
Simon Michael
7a636dd428 imp: cli: non-bold version string 2023-01-26 23:17:58 -10:00
Simon Michael
45808c8e13 imp: cli: add terminalLightness; tweak IsLight threshold; embolden banner 2023-01-26 22:11:20 -10:00
Simon Michael
9c7144e939 imp: cli: pick help accent color to contrast with terminal bg when possible 2023-01-26 22:11:20 -10:00
Simon Michael
72cd441a9f imp: cli: add a little highlighting to help output 2023-01-25 19:16:09 -10:00
Simon Michael
de330bdfce imp: journal: check for adjacent conversion postings only in strict mode
This avoids breaking existing journals if, say, they happen to have
a single "equity:trading" posting somewhere.
2023-01-25 19:00:29 -10:00
Simon Michael
d77d76e17f imp: cli: use $PAGER when help output is taller than terminal
This works with hledger, hledger -h and hledger CMD -h.
2023-01-25 17:20:27 -10:00
Simon Michael
093fdda7db ;imp: cli: commands list tweaks 2023-01-25 15:20:15 -10:00
Simon Michael
1b3b26895e ;doc: update CLI usage texts 2023-01-25 11:59:05 -10:00
Simon Michael
311f0c99eb ;doc: areg: more advice on account-matching 2023-01-25 11:19:03 -10:00
Simon Michael
fbbae55101 imp: cli: merge register-match with register command
register-match is now the --match mode of the register command.
It was used by ledger-autosync at one point, hopefully the new flag
works similarly.
2023-01-25 10:44:12 -10:00
Simon Michael
1899b43073 imp: cli: drop the print-unique command
It disorders same-day transactions, doesn't support print's options,
and isn't useful enough to be always shown in the builtin commands
list. I don't know of any users, or a use for it, and it could easily
be recreated as an addon script, so I'm inclined to not bother
supporting it as a hidden command.
2023-01-25 10:44:12 -10:00
Simon Michael
cce63e6816 imp: cli: reorganise commands list; add a banner; multicolumn addons 2023-01-25 10:44:12 -10:00
Simon Michael
dbb1441402 ;doc: update CLI usage texts 2023-01-10 23:34:14 -10:00
Simon Michael
a7bb6dc5b5 fix: stats: remove wrong mention of output format in help 2023-01-10 23:30:15 -10:00
Simon Michael
e891eecb8b dev: add TypeOperators pragma to satisfy ghc 9.4 2023-01-10 19:33:31 -10:00
Simon Michael
1ea2c41bf7 imp: lib: registerWidthsFromOpts: fix ugly parse error message 2023-01-10 17:07:54 -10:00
Simon Michael
5c289ac92e lib: drop unused widthFromOpts 2023-01-10 17:07:19 -10:00
Simon Michael
af9f8c0416 ;doc: add: payees/descriptions completion 2023-01-04 19:58:05 -10:00
Simon Michael
b5ed655b49 imp: add: Description completions now include payees declared or used
Ie as well as full descriptions, it now also offers payee names which
have been declared with a payee directive, or recorded in transactions
with the | syntax.
2023-01-04 19:46:06 -10:00
Simon Michael
bfe12c33de ;doc: cli: balance: fix link to Budgeting page 2022-12-30 10:05:50 -10:00
Simon Michael
5a8e63d24d ;fix: bal: add missing --layout=tidy to help 2022-12-14 12:21:35 -10:00
Simon Michael
e819e02372 ;doc: bal: more balance doc cleanups 2022-12-14 09:03:55 -10:00
Simon Michael
cf607adfcf ;doc: update CLI usage texts 2022-12-14 07:53:03 -10:00
Simon Michael
2ba91b1195 ;doc: bal: clean up/reorder balance command doc 2022-12-14 07:52:53 -10:00
Simon Michael
2902769616 ;doc: cli, bal: cleanups 2022-12-14 06:36:28 -10:00
Simon Michael
985c15f039 ;doc: cli: clean up/rename directives sections 2022-12-11 01:59:26 -10:00
Simon Michael
fc5d1414f9 ;doc: cli: fix comment links, drop old doc 2022-12-11 01:24:10 -10:00
Simon Michael
ace185f7d2 ;doc: update old manual links 2022-12-10 18:56:47 -10:00
Simon Michael
474ad22b94 ;doc: officially rename "transaction prices" to "costs" in docs
(though not in code)
2022-12-10 18:50:45 -10:00
Simon Michael
3698f8cf90 fix: balcmds: the table layout in HTML output with --layout=bare 2022-12-10 10:22:26 -10:00
Simon Michael
2eadd2497b ;doc: codes: improve example
suggested by Rob Nielsen
2022-12-09 07:57:10 -10:00
Simon Michael
a5b4d80e24 ;doc: update CLI usage texts 2022-12-01 12:24:12 -08:00
Simon Michael
dedb331845 imp: --version strings no longer show + for dirty repos as it's buggy 2022-12-01 12:20:23 -08:00
Simon Michael
a929f8ec8a dev: Cli: cleanup 2022-12-01 12:20:19 -08:00
Simon Michael
d5682aa644 imp: print: --match now respects -o and -O 2022-11-24 19:50:47 -05:00
Simon Michael
b67cb97fff ;doc: print: mention "fuzzy" for discoverability 2022-11-09 09:06:38 -10:00
Simon Michael
7997007dcf imp: print: a failed --match now returns a non-zero exit code 2022-11-09 08:56:48 -10:00
Simon Michael
892eb06396 ;dev: ui: replace "curses interface" with TUI 2022-11-07 16:48:54 -10:00
Simon Michael
06bc09a36f dev: comments 2022-11-06 07:59:45 -10:00
Simon Michael
c25c5cef44 fix: make no-argument --debug flag work with ui & web also 2022-11-03 08:13:58 -10:00
Simon Michael
603fae70c0 dev: lib: clean up/simplify debug helpers 2022-10-31 11:26:11 -10:00
Simon Michael
d5fa141176 ;doc: update CLI usage texts 2022-10-08 13:18:29 -10:00
Simon Michael
ca5847fc08 imp: accounts: clarify flag help; prioritise flags in order of help 2022-10-08 13:18:29 -10:00
Simon Michael
4ecc57461a imp: accounts: -u, -d 2022-10-08 08:22:10 -10:00
Simon Michael
b16a02b2e6 imp: accounts: --unused 2022-10-08 08:16:07 -10:00
Simon Michael
360ef833ae ;doc: update CLI usage texts 2022-10-05 08:42:09 -10:00
Simon Michael
3e42851958 feat: accounts: add --undeclared and --find flags 2022-10-05 08:41:37 -10:00
Simon Michael
ae8d297396 ;doc: update CLI usage texts 2022-10-01 16:09:16 -10:00
Simon Michael
7d1b1cadce fix: add: doc: update tutorial link 2022-09-27 13:40:40 -10:00
Simon Michael
d4a1718690 fix: balcmds: fix empty html columns fix (#1933) 2022-09-14 17:25:18 -10:00
Simon Michael
b9d2aa7b54 fix: balcmds: handle an empty totals column in html output (#1933) 2022-09-14 16:56:28 -10:00
Simon Michael
93ce75d756 imp: dev builds with uncommitted changes now show + in --version 2022-09-08 12:23:59 -10:00
Simon Michael
5deda67658 imp: add: update/improve invalid date message 2022-09-01 15:30:36 -07:00
Simon Michael
c80c72d7cd dev: lib, cli, bin: enable/fix name shadowing warnings
And a few other cleanups.
2022-08-23 12:16:15 +01:00
Simon Michael
96db4fe9cc dev: ui: enable/fix name shadowing warnings 2022-08-23 02:57:59 +01:00
Simon Michael
8f65f8a096 ;doc: update CLI usage texts 2022-08-23 02:02:19 +01:00
Simon Michael
efa1879a11 ;doc: cli: help: more updates 2022-08-22 08:26:32 +01:00
Simon Michael
61d2c047e1 ;doc: update CLI usage texts 2022-08-22 08:21:24 +01:00
Simon Michael
9d2c9bd85f ;doc: cli: help: more updates 2022-08-22 08:21:01 +01:00
Simon Michael
2d9b6b91b5 ;doc: update CLI usage texts 2022-08-22 07:58:41 +01:00
Simon Michael
8eb1e0883a ;doc: cli: help, common tasks: update 2022-08-22 07:45:23 +01:00
Stephen Morgan
c966a0f413 fix!: cbr: Remove old account type query code. (#1921)
This replaces the old journal*AccountQuery with the new Type query. This
enables uniform treatment of account type, and fixes a subtle bug
(#1921).

Note that cbcsubreportquery no longer takes Journal as an argument.
2022-08-21 08:27:51 +01:00
Simon Michael
5fd5cd5b85 imp: acc: --declarations -> --positions; add --directives
And tweak the layout of flags in --help.
2022-08-18 05:08:10 +01:00
Simon Michael
8ec31b079c imp: accounts: --declarations shows that info, not --debug (#1909) 2022-08-16 09:13:30 +01:00
Simon Michael
035f2ac4bb imp: accounts: at --debug 2, show account declaration positions (#1909) 2022-08-16 09:13:30 +01:00
Simon Michael
3b34987bdd dev: accounts: clarifications 2022-08-04 19:01:11 +01:00
Charlotte Van Petegem
75fc6767a9 fix: roi: make sure empty cashflows are skipped when determining first cashflow
Empty cashflows are added when the begin date of the report is before the first
transaction.
2022-08-03 18:16:42 +01:00
Simon Michael
910b37abf8 fix: check: recentassertions: drop the cleared requirement (#1899)
It was causing trouble and complicating things too much.
I wanted it as another signal of being "caught up", but YAGNI.
2022-08-03 09:53:55 +01:00
Simon Michael
c025d228a1 doc: check: add more details about recentassertions 2022-08-01 06:53:04 +01:00
Simon Michael
1ed8c20978 feat: check recentassertions disallows assertion lag > 7 days
hledger check recentassertions (or flycheck-hledger if you enable this
check) will complain if any balance-asserted account does not have a
balance assertion within 7 days before its latest posting.  This aims
to prevent the situation where you are regularly updating your
journal, but forgetting to check your balances against the real world,
eventually requiring you to dig back through months of data to find
the error.
2022-08-01 06:53:04 +01:00
Stephen Morgan
c54fb4d514 imp: cost: Allow matching equity conversion equity postings to
transaction prices.

When given --infer-costs, hledger will now separately infer transaction
prices for different prices. Given a pair of adjacent conversion
postings, hledger will check if there is a single posting with a
transaction price which matches both the amounts. If so, it associates
those conversion postings to that priced post.

If it can't find any transaction price postings which match, it will
find the first non-transaction price post which matches one of the two
amounts, and will add a transaction price to that, and associate them.
2022-07-15 12:32:38 +01:00
Stephen Morgan
07d1b01287 imp: cost: Allow inferring cost from conversion equity postings with --infer-costs.
When given --infer-equity, hledger will change transaction prices to balancing equity postings. This introduces the inverse operation, --infer-costs, which will match balancing equity postings and transform them into a transaction price, allowing --cost to work properly with them. This is only a partial inverse as it needs to use some heuristics to match the postings which will not work in complicated cases.

Specifically, when hledger finds exactly two conversion postings in a transaction (by default, subaccounts of equity:conversion or equity:trad(e|ing)), it will find the first posting in the transaction whose amount is negative one of the conversion posting amounts, and inserts the corresponding transaction price.
2022-07-15 12:32:38 +01:00
Simon Michael
9a34145569 ;doc: update CLI usage texts 2022-07-12 16:01:33 +01:00
Simon Michael
82bfd2bebb ;doc: bse: clarify, link to account types 2022-06-07 02:24:53 +01:00
Simon Michael
ecb8023892 ;doc: bs, cf, is: clarify, link to account types 2022-06-07 02:17:26 +01:00
Simon Michael
496b59060f ;doc: bs, cf: add wikipedia link 2022-06-07 02:09:23 +01:00
Stephen Morgan
9155d679fe fix!: Revert "fix!: utf-8: Use with-utf8 to ensure all files are read and written with utf8 encoding. (#1619)"
This reverts commit e233f001c5.

This would break at least some people's workflow. A lighter touch is
probably sufficient.
2022-06-01 09:35:18 +10:00
Simon Michael
2d581d7d4d ;doc: update CLI usage texts 2022-05-23 05:42:27 -10:00
Simon Michael
43c0ca06c5 doc: cf: update cash account inference description for 1.25 2022-05-23 05:28:27 -10:00
Simon Michael
307f723b0a lib: simpler, more consistent names for check functions
API changes:
journalCheckAccountsDeclared
journalCheckCommoditiesDeclared
journalCheckPayeesDeclared
->
journalCheckAccounts
journalCheckCommodities
journalCheckPayees
2022-05-21 18:29:13 -10:00
Stephen Morgan
e233f001c5 fix!: utf-8: Use with-utf8 to ensure all files are read and written with utf8 encoding. (#1619)
May also fix #1154, #1033, #708, #536, #73: testing is needed.

This aims to solve all problems where misconfigured locales lead to
parsers failing on utf8-encoded data. This should hopefully avoid
encoding issues, but since it fundamentally alters how encoding is dealt
with it may lead to unexpected outcomes. Widespread testing on a number
of different platforms would be useful.
2022-05-22 13:12:19 +10:00
Simon Michael
db26456e1c imp: consolidate ordereddates check under Hledger.Read.Checks too
And remove the last vestiges of older more complex behaviour.
ordereddates now always checks all transactions in each file,
unaffected by a query. (But still affected by --date2).
2022-05-09 00:05:39 -10:00
Simon Michael
810a868c88 ref: consolidate most checks under Hledger.Read.Checks
and error message helpers in Hledger.Read.Error.
2022-05-09 00:04:33 -10:00
Simon Michael
a00dc04e0d imp: check: uniqueleafnames: use the standard error format (#1436)
Hledger.Read.Common:
export makePostingErrorExcerpt
2022-04-25 02:56:59 -10:00
Simon Michael
66d0beea5e imp: check: ordereddates: use the standard error format (#1436)
Hledger.Read.Common:
export makeTransactionErrorExcerpt
2022-04-25 02:56:59 -10:00
Simon Michael
0d232ed673 imp: check: exit with error' for consistent output 2022-04-25 02:56:59 -10:00
Simon Michael
5ee1e1d62f ;doc: fixups suggested by afm 2022-04-15 15:07:17 -10:00
Simon Michael
9f8381426c ;doc: update CLI usage texts 2022-04-14 12:39:09 -10:00
Simon Michael
318ec0a701 doc: tags: move most docs after the flags, like some other commands 2022-04-14 12:37:13 -10:00
Simon Michael
5af224d534 fix: tags: also match accounts declared but not used (#1857)
By default, all account declarations and all transactions are searched;
but when there's a query involving transaction fields,
account declarations unrelated to the matched transactions are not searched.

added:
queryIsCode
queryIsTransactionRelated
2022-04-14 12:28:43 -10:00
Simon Michael
b82021e0b6 imp: accounts: demote --debug 1 output to a more appropriate 4 2022-04-14 10:58:31 -10:00
Simon Michael
5858bb7b6d imp: ghc9.2: fix an incomplete-uni-pattern warning 2022-03-25 20:45:06 -10:00
Simon Michael
b3aff7a394 imp: add: avoid deprecated time function 2022-03-25 20:10:18 -10:00
Stephen Morgan
31c7c5d1ca fix: Clean up build failures due to redundant imports and duplicate
function.
2022-03-26 11:37:32 +11:00
Stephen Morgan
603b2e9f09 ref: Use ExceptT String IO a instead of IO (Either String a).
This increases composability and avoids some ugly case handling. We
re-export runExceptT in Hledger.Read.

The final return types of the following functions has been changed from
IO (Either String a) to ExceptT String IO a. If this causes a problem,
you can get the old behaviour by calling runExceptT on the output:
readJournal, readJournalFiles, readJournalFile

Or, you can use the easy functions readJournal', readJournalFiles', and
readJournalFile', which assume default options and return in the IO
monad.
2022-03-25 14:23:27 -10:00
Stephen Morgan
cbdd86f4dc imp: reg: areg: Align to first 1000 postings by default, rather than 100.
This has the same performance characteristics for a big decrease in alignment
issues. 1000 postings seems to still put it under the memory bottleneck.
2022-03-11 13:25:38 -10:00
Simon Michael
129f37cfe6 reg: tweak --align-all help (#1839) 2022-03-11 07:16:55 -10:00
Simon Michael
64d1927384 reg: document --align-all (#1839) 2022-03-11 07:16:33 -10:00
Stephen Morgan
c0cc9e73c1 dev: reg: areg: Be more clever about register and aregister alignment.
When rendering register or aregister reports, calculate the amount /
balance width based on the first 100 items, and start rendering in that
way. If you encounter a longer one, update and continue rendering. This
will result in adjustment of column width for long reports, but allows
us to save a lot more performant/efficient.

This can be disabled with the new --align-all flag.

We also only render each amount once, rather than twice as before, by
storing the rendered amount in a tuple.
2022-03-11 06:47:48 -10:00
Stephen Morgan
cbc985d411 dev: reg: areg: Speed up reg and areg by only aligning to first 1000 items. 2022-03-10 17:42:04 -10:00
Stephen Morgan
4a80551406 fix: price: Make sure inferred market prices have the correct sign with
total prices. (#1813)

Also reduce duplication for inferring market prices (previously it was
done separately in both Hledger.Data.Journal and
Hledger.Cli.Commands.Prices), and remove *TotalPriceToUnitPrice
functions, since unit prices cannot represent all total prices.

Add a helper function numDigitsInt to get the number of digits in an
integer, which has a surprising number of ways to get it wrong.
2022-03-10 17:34:49 -10:00
Stephen Morgan
19ed6d3f00 cln!: sourcepos: Use megaparsec-supplied sourcePosPretty.
Change showSourcePos to sourcePosPretty, and showSourcePosPair to
sourcePosPairPretty.
2022-03-10 16:56:28 -10:00
Stephen Morgan
73925ae965 fix: types: Ensure auto postings can match against and be matched by type: queries.
This requires checking parent accounts for any new accounts introduced by auto postings which do not exist in the original journal.

Also refactor journalFinalise to only call journalPostingsAddAccountTags once, and use fewer intermediate variables.
2022-02-03 15:32:00 -10:00
Simon Michael
807717805a feat: accounts: --types shows account types (#1820) 2022-02-01 18:06:19 -10:00
Simon Michael
336c4a7b33 imp: cleaner error messages when parsing cli (less "user error") 2022-01-31 16:44:13 -10:00
Simon Michael
9c872c2d9c imp: areg: clearer, more consistent error messages 2022-01-31 16:44:13 -10:00
Simon Michael
45127dc5f5 feat: new type: query for easy matching by account type
type:TYPES, where TYPES is any of the (case insensitive) letters
ALERXCV, matches accounts by their declared or inferred type.
(See https://hledger.org/hledger.html#account-types.)
This should work with most commands, eg:

    hledger bal type:al
    hledger reg type:x

API changes:

Journal has a new jaccounttypes map.
The journalAccountType lookup function makes it easy to check an account's type.
The journalTags and journalInheritedTags functions look up an account's tags.
Functions like journalFilterPostings and journalFilterTransactions,
and new matching functions matchesAccountExtra, matchesPostingExtra
and matchesTransactionExtra, use these to allow more powerful matching
that is aware of account types and tags.
2022-01-31 16:44:13 -10:00
Simon Michael
248ddf9378 dev: more thorough Journal anonymisation, and a note (#1817) 2022-01-30 09:47:52 -10:00
Simon Michael
56be63e6f1 feat: queries can now match account tags (#1817)
Accounts, postings, and transactions can now all be filtered by the
tags in an account's declaration. In particular it's now possible to
more reliably select accounts by type, using their type: tag rather
than their name:

    account myasset       ; type:Asset
    account myliability   ; type:Liability

    $ hledger accounts tag:type=^a
    myasset

Accounts inherit tags from their parents.

API changes:
A finalised Journal has a new jdeclaredaccounttags field
for easy lookup of account tags.
Query.matchesTaggedAccount is a tag-aware version of matchesAccount.
2022-01-30 09:47:52 -10:00
Stephen Morgan
1d9be4c2de cln: print, close: Check the show_costs_ option instead of directly
checking the --show-costs flag.
2022-01-26 08:07:11 -10:00
Stephen Morgan
ba0eec9132 ref: Return the interval split in reportSpan, to reduce the number
of different places we call splitSpan and ease refactoring.
2022-01-26 08:05:37 -10:00
Stephen Morgan
2a51b6e9a4 fix: layout: Commodity symbols should be omitted in --layout=bare when
all amounts are zero. (#1789)
2022-01-26 07:58:14 -10:00
Simon Michael
fbf826a813 ;doc: update CLI usage texts 2022-01-21 08:32:29 -10:00
Simon Michael
1716a3e55c ;doc: roi: dear lord fix links again 2022-01-21 08:20:05 -10:00
Simon Michael
209a726e26 ;doc: roi: make links useful in plain text docs
And update how-to url.
2022-01-21 08:17:55 -10:00
Simon Michael
beeb7b157c ;doc: roi: fix link 2022-01-21 08:13:26 -10:00
Simon Michael
bf2ac4f18b ;doc: roi: formatting 2022-01-21 08:13:26 -10:00
Stephen Morgan
57d055b643 fix: cost: Add inferred equity postings during journal finalisation, so
they can be matched by queries.
2022-01-16 18:37:18 -10:00
Simon Michael
6e12be15df ;doc: update CLI usage texts 2022-01-15 08:56:45 -10:00
Dmitry Astapov
ce54fb8ae9 ;roi: fixes #1791 (fix TWR when investment=0, several pnls per day) 2021-12-27 08:10:22 -10:00
Simon Michael
737ab13284 journal: doc updates for aliases corrupting account names (#1788) 2021-12-22 15:14:37 -10:00
Simon Michael
713f7eab65 journal: doc updates for aliases corrupting account names (#1788) 2021-12-22 15:08:01 -10:00
Simon Michael
9c173bc18b journal: tests/docs for aliases corrupting account names (#1788) 2021-12-22 14:59:13 -10:00
Stephen Morgan
8eedbbbe87 imp: cost: Generate totally balanced conversion postings for amounts with costs.
Introduce --infer-equity option which will generate conversion postings.
--cost will override --infer-equity.

This means there will no longer be unbalanced transactions, but will be
offsetting conversion postings to balance things out. For example.

2000-01-01
  a   1 AAA @@ 2 BBB
  b  -2 BBB

When converting to cost, this is treated the same as before.
When used with --infer-equity, this is now treated as:

2000-01-01
  a                               1 AAA
  equity:conversion:AAA-BBB:AAA  -1 AAA
  equity:conversion:AAA-BBB:BBB   2 BBB
  b                              -2 BBB

There is a new account type, Conversion/V, which is a subtype of Equity/E.
The first account declared with this type, if any, is used as the base account
for inferred equity postings in conversion transactions, overriding the default
"equity:conversion".

API changes:

Costing has been changed to ConversionOp with three options:
NoConversionOp, ToCost, and InferEquity.
The first correspond to the previous NoCost and Cost options, while the
third corresponds to the --infer-equity flag.  This converts transactions with costs
(one or more transaction prices) to transactions with equity:conversion postings.
It is in ConversionOp because converting to cost with -B/--cost and inferring conversion
equity postings with --infer-equity are mutually exclusive.

Correspondingly, the cost_ record of ReportOpts has been changed to
conversionop_.

This also removes show_costs_ option in ReportOpts, as its functionality
has been replaced by the richer cost_ option.
2021-12-21 10:50:13 -10:00
Simon Michael
1ef8f329c6 lib: simpler more robust version strings, with date/without patchlevel
We no longer rely on git tags and git describe output, since it's
hard to reliably select the correct tag eg for minor releases.
We might use them again in future for dev builds, but it requires
adding git describe --match support to githash. For now,

* Program name, OS and architecture are always shown.
* The package version is always shown.
* If there is git info at build time, the latest commit hash and commit date are shown.

Example outputs:
A homebrew binary, not built in git repo: hledger-ui 1.24, mac-aarch64
A CI release build, built in git repo:    hledger 1.24.1-g455b35293-20211210, mac-x86_64

API changes:

* new type synonyms ProgramName, PackageVersion, VersionString
* versionStringForProgname -> versionString with extra argument
* versionStringFor -> versionStringWith with extra argument
2021-12-10 12:42:40 -10:00
Stephen Morgan
c4004fca28 imp: csv: Do not display thousands separators when outputting csv. 2021-12-06 15:17:46 -10:00
Simon Michael
763d171108 ;doc: update CLI usage texts 2021-12-06 15:04:07 -10:00
Simon Michael
4d6f1ed0bf ;doc: bal: update tidy description, example 2021-12-06 15:03:40 -10:00
Simon Michael
5c597750fb ;doc: update CLI usage texts 2021-12-06 14:50:43 -10:00
Simon Michael
872bce55ef ;doc: bal: mention tidy's disabling of totals/averages (#1773, #1775) 2021-12-06 14:49:59 -10:00
Stephen Morgan
29ee0c331f imp: csv: Ignore --row-totals with tidy csv output. 2021-12-06 14:43:43 -10:00
Stephen Morgan
fb0472e0e9 imp: csv: Handle --layout=tidy with the legacy balance report.
Note that this gives output compatible with the multi balance report,
which means it is different from the csv with the legacy balance report.
This means tools only need to be able to handle one tidy csv format.
2021-12-06 13:49:01 -10:00
Stephen Morgan
71646f993c imp: csv: Include the start and end dates of intervals, as well as
string representation of the period, in tidy csv output, and never
include row totals or averages.
2021-12-06 13:49:01 -10:00
Simon Michael
ca0d9e2a0e ;doc: update CLI usage texts 2021-12-05 16:34:01 -10:00
Simon Michael
c250be1bb9 ;doc: bal: document tidy; commodity -> data layout (#1768) 2021-12-05 16:33:56 -10:00
Stephen Morgan
7ccf7430d0 imp: csv: Allow for generating tidy csv with --layout=tidy.
This puts every date in a separate row, which is more suitable for
many graphing programs.
2021-12-05 16:06:44 -10:00
Stephen Morgan
3884f90cc6 lib!: Rename CommodityLayout to Layout and rename constructors.
Their scope is more than just commodities.
2021-12-05 16:06:44 -10:00
Simon Michael
6ce70351fd ;doc: cli, bal: improve table layout in non-html docs 2021-12-05 12:27:20 -10:00
Simon Michael
ee9894f59e ;doc: update CLI usage texts 2021-12-05 12:25:44 -10:00
Simon Michael
7b9cad6cdc ;doc: update CLI usage texts 2021-12-05 11:23:11 -10:00
Simon Michael
76f8ed1514 ;doc: cli, bal: clarify output formats, layouts more 2021-12-05 11:23:00 -10:00
Simon Michael
fdc373f45c ;doc: update CLI usage texts 2021-12-05 10:56:38 -10:00
Simon Michael
371539e085 ;doc: bal: clarify --layout a little 2021-12-05 10:56:17 -10:00
Simon Michael
cda693a94f imp: stats: run time and throughput on one line 2021-11-26 07:13:20 -10:00
Simon Michael
308c554603 ;doc: update CLI usage texts 2021-11-26 05:57:12 -10:00
Simon Michael
aba46874f2 ;dev: is: code notes 2021-11-25 11:55:58 -10:00
Simon Michael
7f320ebfa9 imp: balcmds: support --declared on bs/cf/is also (#1765) 2021-11-25 11:55:58 -10:00
Simon Michael
6319d6148f feat: bal: with --declared, include declared leaf accounts (#1765)
Together with -E, this shows a balance for both used and declared
accounts (excluding empty parent accounts, which are usually not
wanted in list-mode reports).

This is somewhat consistent with --declared in the accounts and payees
commands, except for the leaf account restriction.

The idea of this is to be able to see a useful "complete" balance
report, even when you don't have transactions in all of your declared
accounts yet. I mainly want this for hledger-ui, but there's no harm
in exposing it in the balance CLI as well.
2021-11-23 09:47:04 -10:00
Simon Michael
94d92b9760 Revert "feat: bal: with --declared, include all declared accounts (#1765)"
This reverts commit a5e19b7391.
(It breaks filtering by account.)
2021-11-22 12:06:23 -10:00
Simon Michael
a5e19b7391
feat: bal: with --declared, include all declared accounts (#1765)
Together with -E, this allows showing a balance for all accounts, both
used and declared. I mainly want this for hledger-ui, but there's no
harm in exposing it in the balance command as well. This is somewhat
consistent with the accounts and payees commands.
2021-11-22 11:08:33 -10:00
Simon Michael
6e3695c317 ;dev: commodities: note todo 2021-11-22 09:59:49 -10:00
Simon Michael
066a67ad09 ;doc: update CLI usage texts 2021-11-20 22:07:40 -10:00
Simon Michael
c709a22c64 imp: stats: also show run time and throughput
CliOpts has a new field, progstarttime_.

Currently the new stats are always printed on stdout, ignoring --output-file/--output-format.
2021-11-20 20:51:21 -10:00
Simon Michael
20d8f9f7e2 ;doc: bal: fix list formatting 2021-11-18 22:30:03 -10:00
Simon Michael
678d3b0a06 ;doc: bal: fix link 2021-11-18 22:28:42 -10:00
Simon Michael
be5e6e4167 ;doc: update CLI usage texts 2021-11-18 22:24:59 -10:00
Simon Michael
66b969a74c ;imp: bal --layout: streamline help more (#1751) 2021-11-18 21:27:47 -10:00
Stephen Morgan
4b6fe2c0bd ;doc: balance: Update docs to mention --layout. 2021-11-18 21:26:02 -10:00
Stephen Morgan
d82416b7b9 imp: balance: Add single-line display with elision back in, this time
with a separate option --layout=wide,WIDTH.
2021-11-18 21:26:02 -10:00
Stephen Morgan
de2776c996 imp!: balance: Stop eliding long amounts. (#1739)
This feature has caused a lot of confusion, and we now have better ways
of making sure columns don't get too wide.
2021-11-18 21:26:02 -10:00
Stephen Morgan
7e21f05a83 imp: balance: Implement multi-line display for multicommodity balance reports.
This allows more control over how multicommodity amounts are displayed.
In addition to the default single-line display, and the recent commodity
column display, we now have multi-line display. This is controlled by
the --layout option, which has possible values "wide", "tall", and
"bare". The --commodity-column option has been hidden, but is equivalent
to --layout=bare.

squash
2021-11-18 21:26:02 -10:00
Stephen Morgan
3dce61ea09 fix: prices: Do not try to generate prices when there would be a zero
denominator.

Also correctly generate reverse prices for zero amounts.
2021-11-18 20:59:52 -10:00
Stephen Morgan
f345fd0b78 imp: balance: Allow --related flag for balance reports. (#1469) 2021-11-08 14:03:50 -10:00
Stephen Morgan
9d5397deb6 fix: print: auto: The print command should always display inferred
amounts for --auto generated postings. (#1276)
2021-10-31 09:42:58 -10:00
Stephen Morgan
1bc04685b7 pkg: Drop base-compat-batteries dependency.
Our supported stackage versions are now new enough that we don't need
any of the compatibility features anymore.
2021-10-31 07:56:07 -10:00
Dmitry Astapov
4b1919de02 fix: roi: use posting dates when available, honor --date2
This will not change the results computed for the typical use-case,
just makes "roi" more thorough/consistent by supporting posting dates
when they are provided.
2021-10-11 11:22:46 -10:00
Simon Michael
e4263e69e1 areg: begin respecting --date2: show txns' date2 (#1731) 2021-10-10 10:34:45 -10:00
Stephen Morgan
94d9c28a63 cln: Replace all uses of deprecated !include with include.
Also include a test which makes sure !include is still parsed.
2021-09-27 15:04:35 -10:00
Stephen Morgan
465a5cf917 imp: cli: Allow general optional argument flags (--pretty and
--forecast) to be moved after the subcommand name.
2021-09-22 12:11:44 -10:00
Stephen Morgan
bf3e82f780 imp: pretty: Replace --pretty-tables argument with --pretty=WHEN
argument, which takes yes or no. Default is no for now.
2021-09-21 14:53:52 -10:00
Simon Michael
44d494af07 ;doc: update CLI usage texts 2021-09-20 16:55:22 -10:00
Stephen Morgan
378df77001 cln: Remove unnecessary normaliseMixedAmount(SquashPricesForDisplay)? functions. 2021-09-20 14:49:34 -10:00
Arjen Langebaerd
c0fd79a40e fix: extend application of commodity style to prices (except precision) and make --commodity-style a general flag 2021-09-20 08:55:55 -10:00
Stephen Morgan
4cfd3cb590 lib!: Remove GenericSourcePos, and replace it with either SourcePos or
(SourcePos, SourcePos).

This has been marked for possible removal for a while. We are keeping
strictly more information. Possible edge cases arise with Timeclock and
CsvReader, but I think these are covered.

The particular motivation for getting rid of this is that
GenericSourcePos is creating some awkward import considerations for
little gain. Removing this enables some flattening of the module
dependency tree.
2021-09-20 08:38:33 -10:00
Stephen Morgan
8a6d824900 imp: csv: sql: Use . as a decimal point in sql output for Print command. 2021-09-18 14:32:21 -10:00
Simon Michael
9dca1dc7b6 imp: prices: use --infer-market-prices instead of --costs
This command now reuses the --infer-market-prices flag, and uses
a new --infer-reverse-prices flag, instead of the old
--costs and --inverted-costs flags, which are now deprecated and hidden.
2021-09-18 12:12:31 -10:00
Simon Michael
326d6e8dae ref: ReportOptions{infer_value_} renamed to infer_prices_
For more consistency with the flag name (--infer-market-prices).
And BalancingOpts{infer_prices_} is now infer_transaction_prices_.
2021-09-18 12:12:31 -10:00
Simon Michael
daa9fddec9 imp: cli: --infer-market-price renamed to --infer-market-prices
It was too easy to get this wrong, even some of the docs did.
Now either plural or singular spelling works
(since we accept flag prefixes).
2021-09-18 12:12:31 -10:00
Simon Michael
c784cf4a38 imp: cli: hide the old --infer-value flag spelling
Hide this deprecated legacy flag, and also leave more width for flag descriptions in --help.
2021-09-18 12:12:31 -10:00
Simon Michael
633af61b2e imp: cli: move --today to reportflags (#1674) 2021-09-18 11:24:27 -10:00
Stephen Morgan
54f2600db2 imp: cli: Let --today option handle smart dates, determined relative to
the current date.
2021-09-10 10:40:50 -10:00
Simon Michael
ddec2cedf3 ;doc: update CLI usage texts 2021-09-09 14:44:09 -10:00
Stephen Morgan
6905e40c4d pkg!: cli: Add --today option to explicitly set the current date. (#1674)
rawOptsTo* in hledger-lib now takes a day as an argument, and does not
live in the IO monad, since it's now pure.

This is so that we can run tests containing future transactions that
won't fail as soon as ‘the future’ actually arrives.
2021-09-09 14:40:39 -10:00
Dmitry Astapov
555a68faa5 fix: roi: rare bug with PnL applied on the first day of investment 2021-09-03 11:02:43 -10:00
Stephen Morgan
8274da81fc cln: tests: Remove test and tests, which are just aliases for testCase
and testGroup.

Replacing these removes a layer of indirection, and reduces the need to
depend on Hledger.Utils.Test.
2021-08-30 16:32:19 -10:00
Stephen Morgan
83aa7324eb dev: cli: Move Template Haskell to get git hash from Hledger.Cli.Version
to Hledger.Cli.

Since the git hash changes whenever any file in the repository changes,
this means Hledger.Cli.Version needs to be recompiled all the time.
Since it is at the bottom of the module hierarchy, this means that the
whole hledger package needs to be recompiled. We instead move the
TemplateHaskell splice to one of the top modules, so much less needs to
be recompiled.

Note: Ghc seems to be able to get out of most of the recompiling a lot
of the time (due to caching?), but this makes things more reliable.
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
bd113b223f dev: lens: Introduce lenses for CliOpts. 2021-08-28 19:12:04 -10:00
Stephen Morgan
f3eacebc1d dev: lens: Use TemplateHaskell for ReportOpts and ReportSpec.
Also rename overWithReport/setWithReport to overEither/setEither.
2021-08-28 19:12:04 -10:00
Stephen Morgan
13206d0b18 cln: Rename balancingOpts to defbalancingopts, to be consistent with definputopts, defreportopts, etc. 2021-08-28 19:12:04 -10:00
Stephen Morgan
35be02a4f3 cln: hlint: Clean up some examples of using sortOn. 2021-08-27 06:13:56 -10:00
Stephen Morgan
d248aec313 cln: hlint: Remove eta reduce warnings. 2021-08-27 06:13:56 -10:00
Stephen Morgan
32dad455fd cln: hlint: Clean up section related warnings. 2021-08-27 06:13:56 -10:00
Stephen Morgan
8bf7c95697 cln: hlint: Clean up Functor related hlint warnings, and NOINLINE warning. 2021-08-27 06:13:56 -10:00
Stephen Morgan
beecb3c9ac cln: hlint: Clean up list related hlint warnings. 2021-08-27 06:13:56 -10:00
Stephen Morgan
330c21659f cln: hlint: Clean up Maybe related hlint warnings. 2021-08-27 06:13:56 -10:00
Stephen Morgan
e13239386f cln: hlint: Clean up == and elem related hlint warnings. 2021-08-27 06:13:56 -10:00
Stephen Morgan
3431b1b0d9 cln: hlint: Clean up map-fusion related hlint warnings. 2021-08-26 21:00:35 -10:00
Stephen Morgan
eb6047e81b cln: hlint: Remove redundant where and lambda warnings. 2021-08-26 21:00:35 -10:00
Stephen Morgan
71032c637e cln: hlint: Remove cons warnings. 2021-08-26 21:00:35 -10:00
Stephen Morgan
46b0745412 cln: hlint: Remove Either and Bifunctor related warnings. 2021-08-26 21:00:35 -10:00
Stephen Morgan
d13ce0e134 cln: hlint: Remove Unused LANGUAGE pragma ignore. 2021-08-26 07:23:11 -10:00
Stephen Morgan
119e20aa36 cln: hlint: Remove guards warning. 2021-08-26 07:23:11 -10:00
Stephen Morgan
fed75c58e9 cln: hlint: Clean up hlint warnings not already ignored in hlint.yaml. 2021-08-25 20:44:36 -10:00
Simon Michael
03db46cc81 ;doc: close: mention another cause of non-zero bse 2021-08-24 11:15:26 -10:00
Simon Michael
312097d6a5 ;doc: close: clarify and fix retained earnings example 2021-08-24 11:07:37 -10:00
Simon Michael
b957018536 ;doc: close: simpler clopen: tag 2021-08-24 10:05:18 -10:00
Simon Michael
b51daf4b05 ;doc: close: tweak 2021-08-24 09:58:45 -10:00
Simon Michael
acde291632 ;doc: close: clarify close dates 2021-08-24 09:55:27 -10:00
Stephen Morgan
90fd2a9aaf cln: register: Remove unused knot-tying code.
The conclusion is that trying to tie that knot will inevitably lead to
linear memory consumption; any solution which avoids this, if it exists,
will need significantly different code.

cf. https://stackoverflow.com/questions/66563595/can-i-exploit-lazy-evaluation-to-reference-future-values-without-space-leaks
2021-08-22 18:55:37 -10:00
Stephen Morgan
59b89947eb fix: aregister: Make multicommodity amounts are properly aligned in
aregister. (#1656)

This also switches to the renderTable interface for laying out
aregister, just as in postingsReport.
2021-08-22 18:55:37 -10:00