68 lines
2.3 KiB
Markdown
68 lines
2.3 KiB
Markdown
Miscellaneous hledger add-ons, bash scripts, example make rules, etc.
|
|
Things in this directory can be unfinished or out of date.
|
|
|
|
See <https://hledger.org/addons.html> and <https://hledger.org/scripting.html>
|
|
for more about these scripts and scripting generally.
|
|
|
|
## About the hledger-*.hs scripts
|
|
|
|
The hledger-*.hs [add-on commands] are mostly implemented as [stack]
|
|
runghc scripts. See the comments in hledger-check-fancyassertions.hs
|
|
for more about how to run or compile them. Short version: run
|
|
bin/compile.sh to compile all scripts, and add this directory to your
|
|
$PATH so they show up in hledger's command list.
|
|
|
|
[add-on commands]: http://hledger.org/hledger.html#add-on-commands
|
|
[stack]: https://www.fpcomplete.com/haskell/get-started
|
|
[cabal]: https://www.haskell.org/cabal
|
|
|
|
How to:
|
|
|
|
### Install all scripts as add-on commands
|
|
|
|
$ git clone https://github.com/simonmichael/hledger
|
|
$ hledger/bin/compile.sh
|
|
$ export PATH=$PATH:$PWD/hledger/bin
|
|
|
|
$ hledger # scripts now appear in commands list
|
|
$ hledger-print-location --help # run a script directly
|
|
$ hledger print-location -- --help # or run it via hledger. -- is needed before script options
|
|
|
|
### Create a new script
|
|
|
|
The example scripts follow a template that implements hledger's
|
|
standard command line options and help, so it's a good idea to use one
|
|
as your starting point. The hledger- naming is not required, but it
|
|
causes scripts to show up in the hledger commands list. On unix,
|
|
your new script should be marked executable. This should do it:
|
|
|
|
$ cd hledger
|
|
$ cp bin/hledger-swap-dates.hs bin/hledger-foo.hs # and edit, at least the command name and help
|
|
$ stack install string-qq # ensure any extra script deps are installed
|
|
$ bin/hledger-cmd.hs --help
|
|
foo [OPTIONS]
|
|
My new foo command.
|
|
...
|
|
$ stack ghc bin/hledger-cmd.hs
|
|
$ hledger foo -- --help
|
|
foo [OPTIONS]
|
|
My new foo command.
|
|
...
|
|
|
|
### Run ghcid on a script
|
|
|
|
$ stack install string-qq # ensure any extra script deps are installed
|
|
$ stack exec -- ghcid bin/hledger-foo.hs
|
|
...
|
|
Ok, one module loaded.
|
|
All good (1 module, at 10:50:48)
|
|
|
|
### Run ghci on a script
|
|
|
|
$ stack install string-qq # ensure any extra script deps are installed
|
|
$ stack ghci bin/hledger-foo.hs
|
|
...
|
|
Ok, one module loaded.
|
|
...
|
|
ghci>
|