2023-02-21 13:16:15 +03:00
|
|
|
# Scripts and add-ons
|
2019-07-16 06:59:21 +03:00
|
|
|
|
2022-07-24 09:53:55 +03:00
|
|
|
<div class=pagetoc>
|
2020-08-15 20:52:49 +03:00
|
|
|
|
2022-07-24 09:53:55 +03:00
|
|
|
<!-- toc -->
|
|
|
|
</div>
|
|
|
|
|
2022-07-25 06:12:36 +03:00
|
|
|
This document is the README in the hledger repo's [bin] directory,
|
2023-05-10 02:02:07 +03:00
|
|
|
and is also published as [Scripts and add-ons] on hledger.org.
|
2022-07-24 09:53:55 +03:00
|
|
|
|
2023-02-22 01:18:04 +03:00
|
|
|
[Add-on commands](hledger.html#add-on-commands) are executable script files or compiled programs
|
2023-02-22 05:46:34 +03:00
|
|
|
named `hledger-*`, which show up in hledger's commands list.
|
|
|
|
Some notable add-ons are listed [in the hledger manual](https://hledger.org/dev/hledger.html#add-ons). <!-- > PART 4. COMMANDS > ADD-ONS -->
|
2023-02-22 01:18:04 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
The rest of this page lists smaller scripts and add-ons which are collected in bin/,
|
|
|
|
grouped by how closely they work with hledger:
|
2022-07-24 09:53:55 +03:00
|
|
|
|
2023-03-31 18:57:13 +03:00
|
|
|
To be clear: you don't need any of these when starting out with hledger.
|
|
|
|
hledger comes with many built-in commands, and you may want to get familiar with those first.
|
|
|
|
|
|
|
|
|
2022-07-24 09:53:55 +03:00
|
|
|
<!-- This page can be viewed on github or hledger.org, so use absolute urls. -->
|
|
|
|
[bin]: https://github.com/simonmichael/hledger/tree/master/bin
|
2023-05-10 02:03:41 +03:00
|
|
|
[Scripts and add-ons]: https://hledger.org/scripts.html
|
2022-07-24 09:53:55 +03:00
|
|
|
[Scripting hledger]: https://hledger.org/scripting.html
|
|
|
|
|
2023-02-21 13:16:15 +03:00
|
|
|
## HLEDGER-RELATED
|
|
|
|
|
2023-02-22 01:18:04 +03:00
|
|
|
These scripts don't use hledger directly, but are complementary and might be useful to hledger users.
|
2023-02-22 05:46:34 +03:00
|
|
|
([plaintextaccounting.org](https://plaintextaccounting.org) has a longer list of PTA tools.)
|
2023-02-21 13:16:15 +03:00
|
|
|
|
|
|
|
### paypaljson
|
|
|
|
|
|
|
|
[`paypaljson`](https://github.com/simonmichael/hledger/blob/master/bin/paypaljson)
|
|
|
|
downloads the last 30 days of Paypal transactions (requires a free developer account & API key).
|
|
|
|
|
|
|
|
### paypaljson2csv
|
|
|
|
|
|
|
|
[`paypaljson2csv`](https://github.com/simonmichael/hledger/blob/master/bin/paypaljson2csv) (python)
|
|
|
|
converts `paypaljson`'s output to CSV, with format similar to Paypal's manually-downloaded CSV.
|
|
|
|
|
|
|
|
|
|
|
|
## HLEDGER-RUNNING
|
|
|
|
|
|
|
|
These scripts run hledger via its CLI,
|
2023-02-21 13:39:38 +03:00
|
|
|
eg to help you produce a particular report without needing to remember a complicated command line.
|
2023-02-21 13:16:15 +03:00
|
|
|
They might also consume its text or CSV or JSON output.
|
2023-02-22 05:46:34 +03:00
|
|
|
They can be
|
|
|
|
small shell aliases or functions (typically defined in shell startup files like ~/.bashrc)
|
|
|
|
or individual script files written in shell or another language (typically kept in ~/bin/ or elsewhere in $PATH).
|
2022-07-25 11:02:07 +03:00
|
|
|
|
2022-07-25 06:12:36 +03:00
|
|
|
### bashrc
|
|
|
|
|
|
|
|
[`bashrc`](https://github.com/simonmichael/hledger/blob/master/bin/bashrc)
|
|
|
|
contains many example bash aliases and functions.
|
|
|
|
After installing the bin scripts: as a bash user,
|
|
|
|
```cli
|
|
|
|
# customise FINDIR and LEDGER_FILE at the top of bin/bashrc
|
|
|
|
$ . bin/bashrc
|
|
|
|
$ fin # list the scripts available
|
|
|
|
```
|
|
|
|
|
2022-10-28 00:24:45 +03:00
|
|
|
### watchaccounts
|
|
|
|
|
|
|
|
[`watchaccounts`](https://github.com/simonmichael/hledger/blob/master/bin/watchaccounts)
|
|
|
|
shows hledger account names, updating on file change under the current directory.
|
|
|
|
Arguments are passed to the `hledger accounts` command. Useful when cleaning up accounts.
|
|
|
|
```cli
|
|
|
|
$ watchaccounts expenses -2
|
|
|
|
$ watchaccounts -f time.journal client1 date:thismonth -l
|
|
|
|
```
|
|
|
|
|
2023-02-10 01:08:29 +03:00
|
|
|
### sortandmergepostings
|
|
|
|
|
|
|
|
[`sortandmergepostings`](https://github.com/simonmichael/hledger/blob/master/bin/sortandmergepostings)
|
|
|
|
can be used to cleanup and normalize postings.
|
|
|
|
It will sort postings so that positive ones are first, negative ones last.
|
|
|
|
Inside of that it sorts postings by account name alphabetically.
|
|
|
|
Lastly it facilitates merging postings on transactions with more than one posting in the same direction on the same account.
|
|
|
|
This works by removing the duplicates and cleaning the amount field for at-most one account per run
|
|
|
|
Piping the output to `hledger print` can recalculate the missing amounts.
|
|
|
|
Subsequent runs can cleanup further duplicates.
|
|
|
|
```cli
|
|
|
|
$ sortandmergepostings input.journal | hledger -f - print -x
|
|
|
|
```
|
|
|
|
|
2022-07-24 09:53:55 +03:00
|
|
|
### hledger-simplebal
|
|
|
|
|
|
|
|
[`hledger-simplebal`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-simplebal)
|
2022-07-25 06:12:36 +03:00
|
|
|
shows how to reliably report a single machine-readable number with hledger.
|
2022-07-25 20:26:32 +03:00
|
|
|
This and the other "hledger-" scripts are add-on commands.
|
|
|
|
|
2022-07-24 09:53:55 +03:00
|
|
|
```cli
|
|
|
|
$ hledger simplebal
|
|
|
|
```
|
|
|
|
|
2023-03-26 02:56:06 +03:00
|
|
|
### hledger-bar
|
|
|
|
|
|
|
|
[`hledger-bar`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-bar)
|
2023-04-21 09:29:12 +03:00
|
|
|
prints quick bar charts in the terminal.
|
2023-03-26 02:56:06 +03:00
|
|
|
|
2023-04-23 09:36:24 +03:00
|
|
|
```cli
|
|
|
|
$ hledger bar reimbursement
|
|
|
|
2023-01 ++++++
|
|
|
|
2023-02 ++
|
|
|
|
2023-03 ++
|
|
|
|
2023-04 -------
|
|
|
|
```
|
|
|
|
|
2023-03-26 02:56:06 +03:00
|
|
|
```cli
|
2023-04-21 09:29:12 +03:00
|
|
|
$ hledger bar # show help
|
|
|
|
$ hledger bar food # monthly food expenses
|
|
|
|
$ hledger bar -- 1 --count food # monthly food posting counts
|
|
|
|
$ hledger bar -- type:c not:tag:clopen cur:\\\\$ -W # weekly cashflow, $ only
|
|
|
|
$ hledger bar -- type:al not:tag:clopen cur:\\\\$ # monthly net worth change ($)
|
|
|
|
$ hledger bar -- type:rx --invert cur:\\\\$ # monthly profit/loss ($)
|
|
|
|
$ hledger bar -- -v 1 -f $TIMELOG -D # daily hours, with numbers
|
2023-03-26 02:56:06 +03:00
|
|
|
```
|
|
|
|
|
2022-07-24 09:53:55 +03:00
|
|
|
### hledger-git
|
|
|
|
|
|
|
|
[`hledger-git`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-git)
|
|
|
|
provides easy version control for your journal files, using git. Run it with no arguments for help.
|
|
|
|
```cli
|
|
|
|
$ hledger git log
|
|
|
|
$ hledger git status
|
|
|
|
$ hledger git record [MSG]
|
|
|
|
```
|
|
|
|
|
|
|
|
### hledger-pijul
|
|
|
|
|
|
|
|
[`hledger-pijul`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-pijul)
|
|
|
|
provides the same thing using the [pijul](https://pijul.org) version control system..
|
|
|
|
```cli
|
|
|
|
$ hledger pijul log
|
|
|
|
$ hledger pijul status
|
|
|
|
$ hledger pijul record [MSG]
|
|
|
|
```
|
|
|
|
|
2023-02-21 11:28:41 +03:00
|
|
|
### hledger-edit
|
2023-01-05 13:17:51 +03:00
|
|
|
|
2023-02-21 11:28:41 +03:00
|
|
|
The [hledger-utils python package](https://pypi.org/project/hledger-utils/) provides
|
|
|
|
a `hledger-edit` command to edit the queried transactions in your `$EDITOR` no matter what file they reside in.
|
2023-02-21 11:05:41 +03:00
|
|
|
|
|
|
|
Install or upgrade:
|
|
|
|
```shell
|
|
|
|
$ pip install -U hledger-utils # might be slightly different on your system
|
|
|
|
```
|
|
|
|
|
|
|
|
Examples:
|
2023-01-05 13:17:51 +03:00
|
|
|
```cli
|
|
|
|
# Opens your $EDITOR or $VISUAL with only costs in Florida
|
|
|
|
# (if you named and tagged them like that)
|
|
|
|
# edit the transactions, save and exit your editor,
|
|
|
|
# then the changes are distributed to the original files
|
|
|
|
$ hledger edit Cost tag:location=Florida
|
2023-02-21 11:05:41 +03:00
|
|
|
```
|
|
|
|
```
|
2023-01-05 13:17:51 +03:00
|
|
|
# Automate changes by setting `$EDITOR` to a script
|
|
|
|
# (here all food we had on that one day in Florida was Fast Food 🌭 and we initially forgot to write that)
|
|
|
|
EDITOR='perl -pi -e "s|Cost:Food|Cost:Food:Fast Food|g"' hledger edit tag:location=Florida date:2022-12-20
|
|
|
|
```
|
|
|
|
[![asciicast](https://asciinema.org/a/549559.svg)](https://asciinema.org/a/549559)
|
|
|
|
|
2023-02-21 11:28:41 +03:00
|
|
|
### hledger-plot
|
|
|
|
The [hledger-utils python package](https://pypi.org/project/hledger-utils/) provides
|
|
|
|
a `hledger-plot` command for generating charts with matplotlib.
|
|
|
|
|
|
|
|
Install or upgrade:
|
|
|
|
```shell
|
|
|
|
$ pip install -U hledger-utils # might be slightly different on your system
|
|
|
|
```
|
|
|
|
Examples:
|
2023-02-21 11:05:41 +03:00
|
|
|
```
|
|
|
|
$ hledger-plot -h
|
|
|
|
$ hledger plot -- bal -DH ^Assets -2
|
2023-01-15 01:04:54 +03:00
|
|
|
```
|
|
|
|
|
2023-04-29 03:26:14 +03:00
|
|
|
### hledger-lots
|
|
|
|
|
|
|
|
[`hledger-lots`](https://github.com/edkedk99/hledger-lots)
|
|
|
|
shows a lots report, or generates a lot sale transaction, using FIFO strategy
|
|
|
|
(and without needing subaccounts for lots).
|
|
|
|
|
|
|
|
Install or upgrade:
|
|
|
|
```
|
|
|
|
$ pip install -U hledger-lots
|
|
|
|
```
|
|
|
|
Examples:
|
|
|
|
```cli
|
|
|
|
$ hledger lots
|
|
|
|
$ hledger lots view
|
|
|
|
$ hledger lots list
|
|
|
|
```
|
|
|
|
|
2023-02-21 13:16:15 +03:00
|
|
|
## HLEDGER-INTEGRATED
|
2022-07-25 11:02:07 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
These Haskell scripts use the hledger-lib API for maximum power and robustness;
|
|
|
|
they can do anything hledger's built-in commands can do.
|
2022-07-23 20:11:36 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
### hledger-script-example
|
2022-07-23 20:11:36 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
[`hledger-script-example.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-script-example.hs)
|
|
|
|
is a template for writing your own hledger-integrated add-on command.
|
|
|
|
It has the same structure as most of the add-ons here:
|
|
|
|
- a stack script for robustness
|
|
|
|
- providing command line help
|
|
|
|
- accepting common hledger options
|
2022-07-25 05:31:05 +03:00
|
|
|
|
2022-07-24 09:53:55 +03:00
|
|
|
### hledger-print-location
|
|
|
|
|
|
|
|
[`hledger-print-location.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-print-location.hs)
|
|
|
|
is a variant of hledger's `print` command
|
|
|
|
that adds the file and line number to every transaction, as a tag:
|
|
|
|
```cli
|
|
|
|
$ hledger print-location -f hledger/examples/sample.journal desc:eat
|
|
|
|
2008/06/03 * eat & shop
|
|
|
|
; location: /Users/simon/src/hledger/examples/sample.journal:30
|
|
|
|
expenses:food $1
|
|
|
|
expenses:supplies $1
|
|
|
|
assets:cash
|
|
|
|
```
|
|
|
|
|
|
|
|
### hledger-swap-dates
|
|
|
|
|
|
|
|
[`hledger-swap-dates.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-swap-dates.hs)
|
|
|
|
prints transactions with their date and date2 fields swapped.
|
|
|
|
|
|
|
|
### hledger-check-tagfiles
|
|
|
|
|
|
|
|
[`hledger-check-tagfiles.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check-tagfiles.hs)
|
|
|
|
interprets all tag values containing a `/` (forward slash) as file paths, and checks that those files exist.
|
|
|
|
[`hledger-check-tagfiles.cabal.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check-tagfiles.cabal.hs)
|
2022-07-25 11:02:07 +03:00
|
|
|
is the same command implemented as a cabal script rather than a stack script.
|
2022-07-24 09:53:55 +03:00
|
|
|
|
2023-01-29 19:43:42 +03:00
|
|
|
### hledger-register-max
|
|
|
|
|
|
|
|
[`hledger-register-max.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-register-max.hs)
|
2023-01-29 20:12:08 +03:00
|
|
|
runs a register report and prints the posting with largest historical balance.
|
2023-01-29 19:43:42 +03:00
|
|
|
|
|
|
|
```cli
|
|
|
|
$ hledger-register-max -f examples/bcexample.hledger checking
|
|
|
|
2013-01-03 Hoogle | Payroll Assets:US:BofA:Checking 1350.60 USD 8799.22 USD
|
|
|
|
$ hledger register-max -- -f examples/bcexample.hledger checking
|
|
|
|
2013-01-03 Hoogle | Payroll Assets:US:BofA:Checking 1350.60 USD 8799.22 USD
|
|
|
|
```
|
|
|
|
|
2022-08-02 18:11:24 +03:00
|
|
|
### hledger-check-postable
|
|
|
|
|
|
|
|
[`hledger-check-postable.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check-postable.hs)
|
|
|
|
check that no postings are made to accounts declared with a `postable:n` or `postable:no` tag.
|
|
|
|
This can be used as a workaround when you must declare a parent account to control display order,
|
|
|
|
but you don't want to allow postings to it. Eg, to allow postings to assets:cash but not assets
|
|
|
|
(remember that account tags are inherited):
|
|
|
|
```journal
|
|
|
|
account assets ; postable:n
|
|
|
|
account assets:cash ; postable:
|
|
|
|
```
|
|
|
|
|
2022-07-24 09:53:55 +03:00
|
|
|
### hledger-check-fancyassertions
|
|
|
|
|
|
|
|
[`hledger-check-fancyassertions.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check-fancyassertions.hs)
|
|
|
|
checks account balances over time in more complex ways than hledger's built-in balance assertions.
|
|
|
|
|
|
|
|
### hledger-combine-balances
|
|
|
|
|
|
|
|
[`hledger-combine-balances.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-combine-balances.hs)
|
|
|
|
shows balance reports for two different periods side by side.
|
|
|
|
|
|
|
|
### hledger-balance-as-budget
|
|
|
|
|
|
|
|
[`hledger-balance-as-budget.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-balance-as-budget.hs)
|
|
|
|
uses one balance report to set budget goals for another balance report.
|
|
|
|
|
|
|
|
### hledger-smooth
|
|
|
|
|
|
|
|
[`hledger-smooth.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-smooth.hs)
|
|
|
|
is an incomplete attempt at automatically splitting infrequent/irregular transactions.
|
|
|
|
|
2022-10-02 07:38:48 +03:00
|
|
|
### hledger-move
|
|
|
|
|
|
|
|
[`hledger-move.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-move.hs)
|
|
|
|
helps make subaccount/cost-preserving transfers.
|
|
|
|
|
2022-07-25 20:26:32 +03:00
|
|
|
|
2023-02-21 13:16:15 +03:00
|
|
|
## HOW TO
|
2022-07-25 20:26:32 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
### Install scripts
|
2022-07-25 20:26:32 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
To use these bin scripts you must ensure they are in your $PATH and runnable:
|
|
|
|
|
|
|
|
- Shell scripts: you may need [bash], or to adapt the scripts for your shell.
|
|
|
|
- Python scripts: you'll need python 3 and pip.
|
|
|
|
- Haskell scripts: you'll need stack (<https://www.haskell.org/get-started>).
|
|
|
|
Or if you know how, you can make them cabal scripts, or install their dependencies manually and use runghc/ghc.
|
|
|
|
|
|
|
|
Here's a suggested install procedure:
|
2022-07-25 11:02:07 +03:00
|
|
|
|
|
|
|
```cli
|
2023-02-22 05:46:34 +03:00
|
|
|
# Go to wherever you keep financial files:
|
2022-07-25 11:02:07 +03:00
|
|
|
$ cd ~/finance
|
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
# Get the hledger repo
|
|
|
|
# the fast way, without version control:
|
2022-07-25 11:02:07 +03:00
|
|
|
$ curl -LOJ https://github.com/simonmichael/hledger/archive/refs/heads/master.zip && unzip hledger-master.zip && mv hledger-master hledger
|
2023-02-22 05:46:34 +03:00
|
|
|
# or the slow way, with version control for easy diffing/updating/contributing
|
2023-02-21 13:16:15 +03:00
|
|
|
# git clone https://github.com/simonmichael/hledger
|
2022-07-25 11:02:07 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
# Make a more convenient symlink to the bin directory:
|
2022-07-25 11:02:07 +03:00
|
|
|
$ ln -s hledger/bin
|
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
# Add the bin directory to your PATH. Eg as a bash user:
|
2022-07-25 11:02:07 +03:00
|
|
|
$ echo "export PATH=$PATH:$PWD/bin" >>~/.bash_profile"
|
|
|
|
$ export PATH=$PATH:$PWD/bin
|
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
# Optionally, compile all haskell scripts for faster startup:
|
2023-02-21 13:16:15 +03:00
|
|
|
$ cd hledger; bin/compile.sh
|
2022-07-25 11:02:07 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
# Optionally, install the python scripts:
|
|
|
|
$ pip install -U hledger-utils
|
2023-04-29 03:21:18 +03:00
|
|
|
$ pip install -U hledger-lots
|
2023-02-22 05:46:34 +03:00
|
|
|
|
|
|
|
# Check that hledger's command list now includes the bin scripts.
|
|
|
|
# Eg "check-fancyassertions" and "swap-dates" should be listed:
|
|
|
|
$ hledger
|
|
|
|
|
2022-07-25 11:02:07 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
```
|
2022-07-25 11:02:07 +03:00
|
|
|
|
|
|
|
[bash]: https://www.gnu.org/software/bash
|
|
|
|
[stack]: https://haskellstack.org
|
2020-06-28 20:00:36 +03:00
|
|
|
[stack]: https://www.fpcomplete.com/haskell/get-started
|
2023-02-21 13:16:15 +03:00
|
|
|
[stack scripts]: https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter
|
|
|
|
[add-on commands]: https://hledger.org/dev/hledger.html#add-on-commands
|
2020-08-15 20:25:13 +03:00
|
|
|
[cabal]: https://www.haskell.org/cabal
|
2020-06-28 20:00:36 +03:00
|
|
|
|
2020-08-15 20:52:49 +03:00
|
|
|
### Create a new script
|
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
To create a new hledger-integrated script, copy hledger-script-example.hs.
|
|
|
|
On unix, the new script should be marked executable. This should do it:
|
|
|
|
|
|
|
|
$ cd bin
|
|
|
|
$ cp hledger-script-example.hs hledger-cmd.hs # replace cmd with your command name
|
|
|
|
# edit hledger-cmd.hs, updating at least the command name and help
|
|
|
|
$ stack install safe text # ensure the script's dependencies are installed
|
|
|
|
$ hledger-cmd.hs --help
|
|
|
|
cmd [OPTIONS]
|
|
|
|
My new cmd command.
|
2020-08-15 20:52:49 +03:00
|
|
|
...
|
2023-02-22 05:46:34 +03:00
|
|
|
$ stack ghc hledger-cmd.hs # optionally compile for faster startup/durability
|
|
|
|
$ hledger cmd -- --help
|
|
|
|
cmd [OPTIONS]
|
|
|
|
My new cmd command.
|
2020-08-15 20:52:49 +03:00
|
|
|
...
|
|
|
|
|
|
|
|
### Run ghcid on a script
|
2021-01-13 02:11:20 +03:00
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
$ stack exec --package 'safe text' -- ghcid hledger-cmd.hs
|
2020-08-15 20:52:49 +03:00
|
|
|
...
|
|
|
|
Ok, one module loaded.
|
|
|
|
All good (1 module, at 10:50:48)
|
|
|
|
|
|
|
|
### Run ghci on a script
|
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
$ stack ghci --package 'safe text' hledger-cmd.hs
|
2020-08-15 20:52:49 +03:00
|
|
|
...
|
|
|
|
Ok, one module loaded.
|
2021-01-13 02:11:20 +03:00
|
|
|
...
|
2020-08-15 20:52:49 +03:00
|
|
|
ghci>
|
2022-07-24 09:53:55 +03:00
|
|
|
|
2023-02-21 13:16:15 +03:00
|
|
|
### Learn more about scripting hledger
|
|
|
|
|
2023-02-22 05:46:34 +03:00
|
|
|
See [Scripting hledger].
|