Go to file
2008-11-08 22:20:39 +00:00
data support tools cleanup 2008-05-26 21:19:21 +00:00
doc/misc show Main module in api docs by default 2008-10-01 09:32:02 +00:00
Ledger first attempt at storing per-amount price 2008-11-22 16:26:01 +00:00
tools remove overview.hs 2008-09-28 03:27:17 +00:00
BalanceCommand.hs try making MixedAmount a full newtype, to avoid TypeSynonymInstances error 2008-10-18 10:38:01 +00:00
hledger.cabal bump version number 2008-11-23 19:56:58 +00:00
hledger.hs separate confusing "normalise" uses, begin to fix broken amount display prefs 2008-10-18 21:10:08 +00:00
Ledger.hs replace Currency with a more flexible, ledger-style Commodity 2008-10-12 21:52:48 +00:00
LICENSE add LICENSE 2008-10-01 07:52:07 +00:00
Makefile "make release" extracts version number from Options.hs, tags and uploads to hackage 2008-11-23 22:15:51 +00:00
NOTES notes 2008-11-23 22:04:45 +00:00
Options.hs "make release" extracts version number from Options.hs, tags and uploads to hackage 2008-11-23 22:15:51 +00:00
PrintCommand.hs focus on tests in Tests.hs, clean up 2008-10-15 06:32:52 +00:00
README readme updates 2008-11-08 22:20:39 +00:00
RegisterCommand.hs gather match functions in one place 2008-11-22 05:48:56 +00:00
sample.ledger update and sync the balance report documentation and sample.ledger 2008-10-09 07:10:25 +00:00
Setup.hs clean up imports whitespace, minimise explicit intra-app import/export declarations for now 2008-10-10 01:53:39 +00:00
Tests.hs first attempt at storing per-amount price 2008-11-22 16:26:01 +00:00
Utils.hs gather match functions in one place 2008-11-22 05:48:56 +00:00

hledger - a ledger-compatible text-based accounting tool.
=========================================================

Copyright (c) 2007-2008 Simon Michael <simon@joyful.com>.
Released under GPL version 3 or later.

Welcome to hledger! 

This is a minimal haskell clone of John Wiegley's ledger
(<http://newartisans.com/software/ledger.html>).  hledger does basic
register & balance reports, and demonstrates a functional implementation
of ledger.

For more information, see the hledger home page
(<http://joyful.com/Ledger#hledger>) and ledger manual
(<http://joyful.com/repos/hledger/doc/ledger.html>).

NEWS
----


INSTALLATION
------------
In the hledger directory, do:

 cabal install

or:

 runhaskell Setup.hs configure
 runhaskell Setup.hs build
 sudo runhaskell Setup.hs install 


EXAMPLES
--------
Here are some commands to try:

 hledger --help
 hledger -f sample.ledger balance
 export LEDGER=sample.ledger
 hledger -s balance
 hledger register
 hledger reg cash
 hledger r -- shop


FEATURES
--------
This version of hledger mimics a subset of ledger 2.6.1:

- regular ledger entries
- multiple commodities
- virtual transactions
- balance, print, register commands
- positive and negative account & description filter patterns
- LEDGER environment variable
- and:

  Basic options:
  -h, --help             display summarized help text
  -v, --version          show version information
  -f, --file FILE        read ledger data from FILE

  Report filtering:
  -b, --begin DATE       set report begin date (YYYY/MM/DD syntax)
  -e, --end DATE         set report end date (YYYY/MM/DD syntax)
  -C, --cleared          consider only cleared transactions
  -R, --real             consider only real (non-virtual) transactions

  Output customization:
  -s, --subtotal         balance: show sub-accounts

  Commands:
  balance  [REGEXP]...   show balance totals for matching accounts
  register [REGEXP]...   show register of matching transactions
  print    [REGEXP]...   print all matching entries

hledger-only features:

- ...

ledger features not supported:

- !include
- modifier entries
- periodic entries
- commodity pricing
- flexible date syntax for --begin/--end
- counting an unfinished timelog session
- parsing gnucash files
- and:

  Basic options:
  -o, --output FILE      write output to FILE
  -i, --init-file FILE   initialize ledger using FILE (default: ~/.ledgerrc)
      --cache FILE       use FILE as a binary cache when --file is not used
      --no-cache         don't use a cache, even if it would be appropriate
  -a, --account NAME     use NAME for the default account (useful with QIF)

  Report filtering:
  -c, --current          show only current and past entries (not future)
  -p, --period STR       report using the given period
      --period-sort EXPR sort each report period's entries by EXPR
  -U, --uncleared        consider only uncleared transactions
  -L, --actual           consider only actual (non-automated) transactions
  -r, --related          calculate report using related transactions
      --budget           generate budget entries based on periodic entries
      --add-budget       show all transactions plus the budget
      --unbudgeted       show only unbudgeted transactions
      --forecast EXPR    generate forecast entries while EXPR is true
  -l, --limit EXPR       calculate only transactions matching EXPR
  -t, --amount EXPR      use EXPR to calculate the displayed amount
  -T, --total EXPR       use EXPR to calculate the displayed total

  Output customization:
  -n, --collapse         register: collapse entries; balance: no grand total
  -s, --subtotal         ... other: show subtotals
  -P, --by-payee         show summarized totals by payee
  -x, --comm-as-payee    set commodity name as the payee, for reporting
  -E, --empty            balance: show accounts with zero balance
  -W, --weekly           show weekly sub-totals
  -M, --monthly          show monthly sub-totals
  -Y, --yearly           show yearly sub-totals
      --dow              show a days-of-the-week report
  -S, --sort EXPR        sort report according to the value expression EXPR
  -w, --wide             for the default register report, use 132 columns
      --head COUNT       show only the first COUNT entries (negative inverts)
      --tail COUNT       show only the last COUNT entries (negative inverts)
      --pager PAGER      send all output through the given PAGER program
  -A, --average          report average transaction amount
  -D, --deviation        report deviation from the average
  -%, --percentage       report balance totals as a percentile of the parent
      --totals           in the "xml" report, include running total
  -j, --amount-data      print only raw amount data (useful for scripting)
  -J, --total-data       print only raw total data
  -d, --display EXPR     display only transactions matching EXPR
  -y, --date-format STR  use STR as the date format (default: %Y/%m/%d)
  -F, --format STR       use STR as the format; for each report type, use:
      --balance-format      --register-format       --print-format
      --plot-amount-format  --plot-total-format     --equity-format
      --prices-format       --wide-register-format

  Commodity reporting:
      --price-db FILE    sets the price database to FILE (def: ~/.pricedb)
  -L, --price-exp MINS   download quotes only if newer than MINS (def: 1440)
  -Q, --download         download price information when needed
  -O, --quantity         report commodity totals (this is the default)
  -B, --basis            report cost basis of commodities
  -V, --market           report last known market value
  -g, --performance      report gain/loss for each displayed transaction
  -G, --gain             report net gain/loss

  Commands:
  xml      [REGEXP]...   print matching entries in XML format
  equity   [REGEXP]...   output equity entries for matching accounts
  prices   [REGEXP]...   display price history for matching commodities
  entry DATE PAYEE AMT   output a derived entry, based on the arguments

Some other differences:

- hledger talks about the entry and transaction "description", which ledger calls "note"
- hledger always shows timelog balances in hours
- hledger doesn't require a space after flags like -f