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