hledger/hledger/doc/addons.m4.md
2017-09-12 19:54:39 -07:00

92 lines
3.4 KiB
Markdown

# ADD-ON COMMANDS
hledger also searches for external add-on commands, and will include these in the commands list.
These are programs or scripts in your PATH whose name starts with `hledger-`
and ends with a recognised file extension
(currently: no extension, `bat`,`com`,`exe`, `hs`,`lhs`,`pl`,`py`,`rb`,`rkt`,`sh`).
Add-ons can be invoked like any hledger command, but there are a few things to be aware of.
Eg if the `hledger-web` add-on is installed,
- `hledger -h web` shows hledger's help, while `hledger web -h` shows hledger-web's help.
- Flags specific to the add-on must have a preceding `--` to hide them from hledger.
So `hledger web --serve --port 9000` will be rejected; you must use `hledger web -- --serve --port 9000`.
- You can always run add-ons directly if preferred: `hledger-web --serve --port 9000`.
Add-ons are a relatively easy way to add local features or experiment with new ideas.
They can be written in any language, but haskell scripts have a big advantage:
they can use the same hledger (and haskell) library functions that built-in commands do,
for command-line options, journal parsing, reporting, etc.
Here are some hledger add-ons available:
## Official add-ons
These are maintained and released along with hledger.
### api
[hledger-api](hledger-api.html) serves hledger data as a JSON web API.
### ui
[hledger-ui](hledger-ui.html) provides an efficient curses-style interface.
### web
[hledger-web](hledger-web.html) provides a simple web interface.
## Third party add-ons
These are maintained separately, and usually updated shortly after a hledger release.
### diff
[hledger-diff](http://hackage.haskell.org/package/hledger-diff)
shows differences in an account's transactions between one journal file and another.
### iadd
[hledger-iadd](http://hackage.haskell.org/package/hledger-iadd)
is a curses-style, more interactive replacement for the [add command](/hledger.html#add).
### interest
[hledger-interest](http://hackage.haskell.org/package/hledger-interest)
generates interest transactions for an account according to various schemes.
### irr
[hledger-irr](http://hackage.haskell.org/package/hledger-irr)
calculates the internal rate of return of an investment account.
## Experimental add-ons
These are available in source form in the hledger repo's bin/ directory;
installing them is [pretty easy](/download.html#d).
They may be less mature and documented than built-in commands.
Reading and tweaking these is a good way to start making your own!
### autosync
[hledger-autosync](https://github.com/simonmichael/hledger/blob/master/bin/hledger-autosync)
is a symbolic link for easily running
[ledger-autosync](https://pypi.python.org/pypi/ledger-autosync), if installed.
ledger-autosync does deduplicating conversion of OFX data and some CSV formats,
and can also download the data
[if your bank offers OFX Direct Connect](http://wiki.gnucash.org/wiki/OFX_Direct_Connect_Bank_Settings).
### budget
[hledger-budget.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-budget.hs#L10)
adds more budget-tracking features to hledger.
### chart
[hledger-chart.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-chart.hs#L47)
is an old pie chart generator, in need of some love.
### check
[hledger-check.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check.hs)
checks more powerful account balance assertions.