Commit Graph

2151 Commits

Author SHA1 Message Date
Simon Michael
8b48fc41bc imp: setup: version check: improve error output when unknown 2025-04-20 10:52:50 -10:00
Simon Michael
97e2e8572f imp: setup: version check: add a timeout, improve error output 2025-04-20 10:52:50 -10:00
Simon Michael
15173eeeb0 imp: setup: test default file setup 2025-04-20 10:52:50 -10:00
Simon Michael
4881a0deaa ;doc:setup 2025-04-20 10:52:50 -10:00
Simon Michael
75cd521ed7 imp:setup: drop unused options 2025-04-20 10:52:50 -10:00
Simon Michael
2ef7434f47 imp:setup: check files setup (WIP) 2025-04-20 10:52:50 -10:00
Simon Michael
d408f00b42 imp:setup: use HEAD instead of GET to check current version 2025-04-20 10:52:50 -10:00
Simon Michael
98da9709fc imp:setup: config file tests; tidier more portable color-aware output 2025-04-20 10:52:50 -10:00
Simon Michael
bb7510194e imp: setup: setup ignores the config file itself, for robustness 2025-04-20 10:52:50 -10:00
Simon Michael
daf550bbb0 imp: Hledger.Cli.Conf: refactor, expose more info about config files 2025-04-20 10:52:50 -10:00
Simon Michael
320d197735 imp:setup: more hledger setup tests 2025-04-20 10:52:50 -10:00
Simon Michael
69232cae7a feat: setup: first setup check: is hledger in PATH ? 2025-04-20 10:49:16 -10:00
Simon Michael
cff831c3c0 feat:setup: command skeleton 2025-04-20 10:49:16 -10:00
Simon Michael
29bca306ee ;doc: print: simplify [#2368] 2025-04-18 18:50:41 -10:00
samahri
6bf9369cda imp: add --location tag to print command [#2368]
;fix: delete hledger-print-location, move doc to Print.hs>"print,other features"
2025-04-18 18:49:34 -10:00
samahri
588cab14f3 imp: add --location tag to print command [#2368] 2025-04-18 18:49:34 -10:00
Simon Michael
9340b73aae imp: improve/format errors for various failures [#2367]
These now call error' and show errors in the standard style:

- reading a nonexistent data file
- reading an unsafe dotted file name on windows
- web: using --socket on windows
- demo: demo not found
- demo: error while running asciinema
- diff: bad arguments
- print --match: no match found
- register --match: no match found
- roi: no investment transactions found
2025-04-11 08:06:47 -10:00
Simon Michael
454c669fe4 fix:cli,ui,web: consistent console error output independent of GHC version [#2367]
Hledger.Utils.IO helpers have been updated and new ones have been
added (exitOnExceptions, exitWithError) to allow consistent display of
program errors whether compiled with GHC <9.10, GHC 9.10, or GHC >9.10.
The trailing newlines added by GHC 9.10 are gone,
and so is the "uncaught exception" output added by GHC 9.12.
2025-04-11 08:06:47 -10:00
Michael Rees
62071bc4c2 feat: timeclock: Add support for multiple clocked in sessions (#2141)
We now support having multiple sessions clocked in. These are paired by
account name if given on the out entry, and otherwise an out closes the
most recent in entry.

Note that this breaks some backwards compatibility, in that we
previously ignored the description on the clock out entry. To mitigate
this, a new hidden flag --timeclock-old has been added, which reverts to
the old behavior.
2025-04-03 11:19:18 -10:00
Simon Michael
20226283b8 ;pkg: tweak LICENSE files, try to get github to recognise 2025-03-31 18:18:10 -10:00
Simon Michael
47bb40f838 ;pkg: clean up LICENSE files, main module licensing headers 2025-03-31 18:10:19 -10:00
Stephen Morgan
8474c811c5 imp run: More successful cache hits with forecast
If forecast start and end dates are explicitly requested with
--forecast=, those parts of the reportspan_ can be replaced with the
forecast dates, meaning more successful cache hits.
2025-03-12 20:47:17 -10:00
Simon Michael
6f17d133dd ;imp:cli: improve help for --pretty 2025-03-09 08:16:38 -10:00
Simon Michael
6d47530ebc ;imp:cli: improve help for mutually exclusive valuation flags 2025-03-09 08:16:38 -10:00
Simon Michael
dbb85e3a9f ;doc:balance: "types" -> "modes" 2025-03-08 13:09:02 -10:00
Simon Michael
b31091195b ;doc: update command docs 2025-03-08 12:44:57 -10:00
Simon Michael
02ef6e45e7 imp:cli: make mutually exclusive flags clearer in --help 2025-03-08 12:42:16 -10:00
Dmitry Astapov
9963a01a15 run: do not pre-load journal(s) at the start of "run" [#2345]
wait for the first command to do this. Same for "repl"
2025-03-08 09:55:59 -10:00
Dmitry Astapov
c0b3c932ea ;run: --forecast with changed reporting interval fix (+test) [#2345] 2025-03-08 09:55:59 -10:00
Simon Michael
054e9561e4 ;doc: update command docs 2025-03-07 22:03:09 -10:00
Simon Michael
44a4b79fa4 ;doc:run, repl: more edits 2025-03-07 22:02:14 -10:00
Simon Michael
f153d7f707 ;doc: update command docs 2025-03-07 21:38:10 -10:00
Pranesh Prakash
2369f1338a ;doc:repl: updates
Corrected one small mistake, and changed a few other things for clarity.

Applied changes to the right file (Repl.md) this time.
2025-03-07 21:35:44 -10:00
Pranesh Prakash
fc2aabaab3 ;doc:repl: updates
Corrected one small mistake, and changed a few other things for clarity.
2025-03-07 13:35:26 -10:00
Simon Michael
7a3f69c5a1 ;doc:repl: updates 2025-03-06 19:45:55 -10:00
Dmitry Astapov
a3d2c7bb58 ;run: test that demonstrates caching 2025-03-06 16:43:39 -10:00
Simon Michael
a0cf410a80 ;doc:run, repl: updates 2025-03-06 16:36:54 -10:00
Simon Michael
3d1994ea76 ;doc: add commands, repl, run to Commands section 2025-03-06 16:15:22 -10:00
Simon Michael
0cd86d959e ;doc: update command docs 2025-03-06 16:05:25 -10:00
Simon Michael
cdbbe40e5b ;doc:run, repl: updates and edits 2025-03-06 16:03:55 -10:00
Simon Michael
e9f1e7dbd4 ;doc:demo: mark experimental 2025-03-06 16:03:29 -10:00
Simon Michael
ebf8d25a49 imp:cli: commands list tweaks 2025-03-06 13:58:24 -10:00
Simon Michael
cf81b042be imp:run,repl: allow running addon commands 2025-03-06 13:56:43 -10:00
Simon Michael
a1a6aad873 fix:repl: also catch IO errors like run nosuchfile
And print exceptions consistently, with a single newline.
2025-03-06 13:05:45 -10:00
Simon Michael
9ecc3a56d0 fix:repl: make the run command work in the REPL again
The now-required -- argument was being lost during REPL parsing.
I think this is right, though it's hard to understand.
2025-03-06 13:03:57 -10:00
Simon Michael
fd906bec95 ;dev:cli: debug output tweaks; moveFlagsAfterCommand doc edit 2025-03-06 11:56:21 -10:00
Dmitry Astapov
758335daf0 run: support --man, --info, --tldr 2025-03-06 11:54:00 -10:00
Dmitry Astapov
7fdb2f7fe6 ;run: use leading -- to decide whether to read from files or not 2025-03-06 11:54:00 -10:00
Dmitry Astapov
4dbeac284c ;run: refuse to read commands from stdin if one of the input files was - 2025-03-06 11:54:00 -10:00
Dmitry Astapov
9c63b36d88 ;run: require -- before first command (+test for that) 2025-03-06 11:54:00 -10:00
Dmitry Astapov
6766498f42 run: can re-read stdin, if needed 2025-03-06 11:54:00 -10:00
Dmitry Astapov
df0cd78b26 ;run: more robust terminal check 2025-03-06 11:54:00 -10:00
Dmitry Astapov
e4cfd31544 ;run: add leading -- to short cmdline help 2025-03-06 11:54:00 -10:00
Dmitry Astapov
c354e6e9f7 ;run: don't exit repl when subcommand exits 2025-03-06 11:54:00 -10:00
Dmitry Astapov
22155e2bae run: make sure that reporting interval does not affect caching 2025-03-06 11:54:00 -10:00
Dmitry Astapov
cffceb0d06 ;run: fix stale comments 2025-03-06 11:54:00 -10:00
Dmitry Astapov
1fc7006919 run: cache input files by (iopts, name), allows commands with different iopts 2025-03-06 11:54:00 -10:00
Dmitry Astapov
d3d3e02f9e ;run: another typo fixed 2025-03-06 11:54:00 -10:00
Dmitry Astapov
4ad3d00864 ;doc: run & repl: typos fixed, you can pipe into run 2025-03-06 11:54:00 -10:00
Dmitry Astapov
4a08f975f6 ;run,repl: dont print unrecognized text, error out 2025-03-06 11:54:00 -10:00
Dmitry Astapov
ef6b6ecc1b ;run: accept commands on stdin, repl hides prompt when non-interactive 2025-03-06 11:54:00 -10:00
Dmitry Astapov
2f348f787b ;repl: dont stop on exceptions 2025-03-06 11:54:00 -10:00
Dmitry Astapov
2ba12d6ec5 ;repl: fixed layout in command list 2025-03-06 11:54:00 -10:00
Dmitry Astapov
d615865d4d ;run: reword the quoting passage in docs 2025-03-06 11:54:00 -10:00
Dmitry Astapov
4f9fff9e81 ;repl: added to the list in Commands.hs 2025-03-06 11:54:00 -10:00
Dmitry Astapov
61faca16e4 run: split run and repl, fix journal passed to nested "run"s 2025-03-06 11:54:00 -10:00
Dmitry Astapov
a7116a8b0f ;run: missed a spot for replaceNumericFlags 2025-03-06 11:54:00 -10:00
Dmitry Astapov
e67bef1b0c ;run: expand docs (nested run, more examples) 2025-03-06 11:54:00 -10:00
Dmitry Astapov
b5f5c39d48 run: properly retrieve cached files when there are nested "run"s 2025-03-06 11:54:00 -10:00
Dmitry Astapov
e665bf124d ;run: handle reader prefixes properly 2025-03-06 11:54:00 -10:00
Dmitry Astapov
a76d23957f ;run: fix typo in the REPL help message 2025-03-06 11:54:00 -10:00
Dmitry Astapov
cf05ccb8e4 ;run: comments 2025-03-06 11:54:00 -10:00
Dmitry Astapov
8431cbe95b run: do not try to cache "top-level" journal more than once 2025-03-06 11:54:00 -10:00
Dmitry Astapov
5bd9be2189 run: allow "run" to invoke "run" (fixes #2331) 2025-03-06 11:54:00 -10:00
Dmitry Astapov
88a4b0abae run: support @ARGFILEs (fixes #2330) 2025-03-06 11:54:00 -10:00
Dmitry Astapov
6569714d37 run: cache individual files rather than file groups 2025-03-06 11:54:00 -10:00
Dmitry Astapov
32f286cc35 run: cache all journal files, allow commands to use -f 2025-03-06 11:54:00 -10:00
Simon Michael
aee85df17b ;dev:cli: to help run's command line parsing, double the first -- [#2328]
So that when cmdargs eats it, another remains.
2025-03-06 09:56:25 -10:00
Simon Michael
0b20e11857 ;dev:moveFlagsAfterCommand: doc edits 2025-03-06 07:53:05 -10:00
Simon Michael
e6bf705de0 fix:moveFlagsAfterCommand: don't rearrange things after -- [#2328]
Helps the run command.
2025-03-06 07:25:48 -10:00
Simon Michael
40b40fc2c8 ;dev:moveFlagsAfterCommand: note a problem [#2328] 2025-03-06 06:56:34 -10:00
Simon Michael
f97954a796 dev:commands: don't require a journal file 2025-03-05 11:37:25 -10:00
Simon Michael
4eb98a761a ;doc: update command docs 2025-03-05 11:10:49 -10:00
Simon Michael
34ba84ff9c feat: commands, an explicit command to show the commands list; refactor 2025-03-05 11:10:42 -10:00
gesh
f450379229 ;cln: Remove unused widthFromOpts (see 5c289ac)
As noted in 5c289ac, it is unused elsewhere, and registerWidthsFromOpts
is right next to it and implements nearly the exact same logic
2025-03-04 16:26:15 -10:00
gesh
a1bcdcd157 ;cln: Remove unused debugArgs
A variant of it is present as a local definition in getHledgerCliOpts'
2025-03-04 16:26:15 -10:00
Simon Michael
a65900c62d imp:cli: recognise .ysh, .osh file extensions as addons 2025-02-27 21:26:57 -10:00
Simon Michael
956a2f6565 ;doc: manuals: update command options 2025-02-27 15:26:17 -10:00
Simon Michael
b629c31f9a ;doc: manuals: remove obsolete mentions of COLUMNS [#2340] 2025-02-27 15:26:17 -10:00
Simon Michael
d346e56b79 dev: fix warnings, update yaml file, edit [#2340] 2025-02-27 13:41:48 -10:00
gesh
3fa39c17b3 dev: Remove usage of partial NE.fromList
At this point, we're just giving a default for unpacking a Maybe
2025-02-27 13:41:48 -10:00
gesh
cde77eace0 fix: Remove references to $COLUMNS
As noted in Hledger.Utils.IO, COLUMNS is a bashism that isn't
particularly usable for our purposes (for one thing, it isn't updated
when the terminal is resized)
2025-02-27 13:41:48 -10:00
gesh
a24c39f13f fix: Use POSIX API to compute tty width (#2332)
On some systems, TERM is set to a value that doesn't have a valid
terminfo entry. Rather than hackily fall back on a value for TERM that
appears to work in most contexts (TERM=dumb) but which isn't guaranteed
anywhere to be valid, use proper POSIX ioctls to get the tty width.

This has the added bonus of also working on Windows.

In fact, we already settled on computing the terminal size in this way
in hledger-lib, so this commit centralizes the choice of the logic
there.

Also added a note for alternative methods and their tradeoffs, in case
this turns out to be fragile on some systems.
2025-02-27 13:41:48 -10:00
Simon Michael
d807d7bd0c ;imp:bal: improve --layout option description 2025-02-23 12:25:48 -10:00
Simon Michael
7ef96d4bd1 fix:bal --budget: don't let costs prevent showing a percentage [#2327] 2025-02-18 12:17:47 -10:00
Joschua Kesper
5114962b2a feat:csv: add an encoding rule, allowing non-UTF8 CSV to be read [#2319]
Previously, hledger could read CSV files containing non-ascii
characters only if they are UTF8-encoded.  Now there is a new CSV
rule, encoding ENCODING, which allows reading CSV files with other
encodings.

This adds a dependency on the encoding library, which supports fewer
encodings than text-icu but does not require a third-party C library.
To avoid build issues on various platforms, we require version 0.10+.

This adds some use of the ImplicitParams language extension, required
by encoding's API, but only in a small code region.

This also changes the type of Reader's rReadFn; it now takes
a `Handle` rather than a `Text`, allowing more flexibility.
2025-02-15 14:48:30 -10:00
Dmitry Astapov
d84050ec05
feat:run: run multiple commands efficiently, as a script or at a REPL (Dmitry Astapov, #2323) 2025-02-13 16:13:07 -10:00
Simon Michael
3e838e4d0f imp:print: support --invert [#2314] 2025-01-27 05:21:36 -10:00
Simon Michael
b3e50f5e59 fix:bal:html output: also suppress total heading when -H is active 2025-01-25 20:38:09 -10:00
Simon Michael
29885d15fa dev: refactor Hledger.Write.Html etc, reducing Lucid references
Clarify the HTML lib situation a bit, and clean up some imports.

Related: #2244
2025-01-25 11:53:51 -10:00
Simon Michael
14dd2c6200 dev: rename printHtml -> styledTableHtml 2025-01-25 11:53:51 -10:00
Dmitry Astapov
9d4db48510 ;roi: optimize "one period per report interval" case a bit 2025-01-21 23:42:36 -10:00
Simon Michael
31370bb65d ;doc: update command docs 2025-01-21 23:22:34 -10:00
Simon Michael
4614300d6a ;fix:print: --help was indicating wrong --round default [#2318] 2025-01-21 23:15:15 -10:00
Simon Michael
adef1a8416 lib: add dropRawOpt, cliOptsDropArgs 2025-01-21 22:02:05 -10:00
Simon Michael
0602b241d1 ;dev:print: comment 2025-01-11 07:15:18 -10:00
Simon Michael
f3151e3880 ;doc:close: mention the balance assertions 2025-01-10 01:19:56 -10:00
Simon Michael
87cc3e1393 imp:close: omit file extension from tag value 2025-01-09 21:26:53 -10:00
Simon Michael
bde97b8f28 ;doc: update command docs 2025-01-09 21:19:44 -10:00
Simon Michael
6868ab06a4 imp:close: --migrate -> --clopen; more doc rewrites 2025-01-09 21:19:44 -10:00
Simon Michael
2588e31466 imp:close: change the start: tag to clopen:, and change --assign's tag to assign:
And some doc edits.
2025-01-09 15:32:25 -10:00
Simon Michael
5db62b37e1 fix:close: --infer-costs no longer implies -x/--explicit [#1826] 2024-12-27 12:50:26 -10:00
Simon Michael
eb9bb16faa fix:add: account names provided on command line were being ignored [#2305]
Fix suggested by Raphael (lowercasename)
2024-12-20 15:51:15 -10:00
Simon Michael
e71e8a8711 fix:bs/bse/cf/is: drop unsupported --budget option from help [#2302] 2024-12-20 10:41:47 -10:00
Simon Michael
9de9fe7656 ;doc: update command docs 2024-12-20 10:41:47 -10:00
Simon Michael
0a14b3a08c fix:areg: drop inconsistent newline in options help 2024-12-20 10:41:46 -10:00
Dmitry Astapov
dde5a59049 roi: simplify/speed up (no longer checks every day with P directive) 2024-12-18 07:42:13 -10:00
Simon Michael
3a47888534 ;doc: Balance report output: drop outdated note about --tree and HTML [#1846] 2024-12-09 18:54:08 -10:00
Simon Michael
b10c0f256c ;doc: common.m4: clean up, update generaloptions macro 2024-12-07 09:22:32 -10:00
Simon Michael
43dd0cfc5d ;dev: cleanups 2024-12-07 08:50:34 -10:00
Simon Michael
f648903b37 imp:print:beancount: don't add account tags to postings
When print is generating beancount output, turn off the usual
inheritance of account tags by postings; it would generate excessive
metadata in the journal. Beancount can do or not do that kind of
inheritance itself.
2024-12-06 05:55:42 -10:00
Simon Michael
ff28aa329a imp:print:beancount: convert tags to BC metadata
Transaction and posting tags (and posting tags inherited from accounts)
are now converted safely to Beancount-compatible transaction and posting
metadata lines.
2024-12-06 05:55:42 -10:00
Simon Michael
17332c75f9 imp:print:beancount: generate operating_currency directives from cost currencies 2024-12-06 05:55:42 -10:00
Simon Michael
b4f4374dfa imp:print:beancount: remove redundant conversion postings automatically 2024-12-06 05:55:42 -10:00
Simon Michael
6e3dfd6703 imp:print:beancount: remove virtual postings automatically 2024-12-06 05:55:42 -10:00
Stephen Morgan
73fd60b2b0 ;imp: doc: Document new regular expression limited depth. 2024-12-03 08:33:21 -10:00
Stephen Morgan
74f0f37fb3 imp: queries: Allow regular expression depth queries
Previously depth-limiting was universal across all accounts, e.g. all
accounts are clipped to depth 2. However, sometimes you want certain
accounts clipped to a different depth than others, e.g. all expenses to
depth 3, while all assets to depth 2. This commit enables depth-limiting
to optionally include a regular expression, which limits the accounts it
applies to.

More than one depth limit can be passed, and they are applied to each
account name by the following rules:
- If one or more regular-expression depth limit applies, use the
  most specific one
- If no regular-expression depth limits apply, and a flat depth limit is
  supplied, use that
- Otherwise, do not do any depth limiting

For example, this will clip all accounts matching "assets" to depth 3,
all accounts matching "expenses" to depth 2, and all other accounts to
depth 1.
--depth assets=3 --depth expenses=2 --depth 1
2024-12-03 08:33:21 -10:00
Simon Michael
f345c6c8d9 ;doc:import: more edits 2024-12-01 11:22:10 -10:00
Simon Michael
d16efeb26a ;doc:import: edit 2024-11-30 09:25:02 -08:00
Simon Michael
f414c37195 ;doc:import: first import tips 2024-11-30 06:57:13 -08:00
Simon Michael
812a7e28d7 ;doc:import: updates 2024-11-29 16:18:58 -08:00
Simon Michael
ff649114a7 ;doc:import: updates 2024-11-29 16:03:08 -08:00
Simon Michael
3d0aec7e8b ;doc:import: rewrite; date skipping -> overlap detection 2024-11-29 15:45:19 -08:00
Dmitry Astapov
c006959b05 lib: fix division by zero in roi when all assets are sold (fixes #2281) 2024-11-06 17:56:36 -10:00
Henning Thielemann
d176215f03 cli: Commands.Aregister: --header -> --heading 2024-11-06 16:38:38 -10:00
Simon Michael
326acbf93b imp: check recentassertions: try to make the error message clearer 2024-11-02 18:10:53 -10:00
Simon Michael
4d38c63ec8 dev: move/rename nullsourcepos 2024-11-02 14:59:43 -10:00
Simon Michael
657fc1551f !fix: respect --color=yes in a few places that didn't; drop text-ansi dep
Hledger.Utils.IO's ansi style/color helpers now respect --color=yes,
so that eg `hledger --color=yes | less -R` shows bold headings as
you'd expect.

Hledger.Utils.IO.rgb' now takes Float arguments instead of Word8.
2024-11-01 10:40:25 -10:00
Simon Michael
66953ae0be ;doc: pager: note that help -p TOPIC uses less 2024-11-01 08:15:09 -10:00
Simon Michael
30086ae249 imp: run pager more robustly; drop pager lib [#2272]
This fixes the error displayed when quitting the pager with long output.
It also replaces the pager lib with more robust homegrown pager utilities,
which should prevent a number of failure modes.
2024-10-31 18:55:09 -10:00
Simon Michael
50bf401ea6 dev: split debug/ghcdebug flags, comment out the latter for now
Compilation with ghc-debug is failing, and it has not yet been used
for anything. Separate the flag and leave it in place but commented for now.
2024-10-24 10:44:28 -10:00
Henning Thielemann
e43168533f cli: Commands.Aregister: replace option --no-header by --header=YN 2024-10-23 21:55:24 -10:00
Henning Thielemann
1a9bfcf5be cli: Commands.Aregister: implement --invert option 2024-10-23 21:55:24 -10:00
Henning Thielemann
fa3676df7d doc: Commands.Aregister: motivate --no-header option 2024-10-22 12:05:42 -10:00
Henning Thielemann
93d32a934b doc: Commands.Aregister: mention --cumulative option 2024-10-22 12:05:42 -10:00
Henning Thielemann
8a56c4944c cli: Commands.Aregister: new option --no-header 2024-10-22 12:05:42 -10:00
Henning Thielemann
3714ac0593 lib: Write.Ods.printFods: change type of number of fixed rows/columns from (Maybe Int) to Int
0 is a perfect value for no fixed row or column.
2024-10-22 12:05:42 -10:00
Henning Thielemann
b2aad52168 cli: Commands.Aregister: support option --cumulative 2024-10-22 12:05:42 -10:00
Simon Michael
0f7242182e ;doc: update help 2024-10-20 09:26:08 -10:00
Henning Thielemann
f1ded22c97 cli: Commands.Register: rename parameter base -> baseUrl 2024-10-20 08:49:36 -10:00