cli: render command help as plain text, hiding markup
This means committing a bunch more generated files, but it's probably worthwhile, so we can have both rich hyperlinked/styled command docs and clean readable command help.
This commit is contained in:
parent
c8b0c9accd
commit
3baad5d729
@ -235,7 +235,7 @@ printCommandsList addonsFound =
|
||||
-- The test command is defined here for easy access to other modules' tests.
|
||||
|
||||
testmode = hledgerCommandMode
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Test.md")
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Test.txt")
|
||||
[]
|
||||
[generalflagsgroup3]
|
||||
[]
|
||||
|
||||
@ -35,7 +35,7 @@ import Hledger.Cli.CliOptions
|
||||
|
||||
-- | Command line options for this command.
|
||||
accountsmode = hledgerCommandMode
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Accounts.md")
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Accounts.txt")
|
||||
[flagNone ["declared"] (\opts -> setboolopt "declared" opts) "show account names declared with account directives"
|
||||
,flagNone ["used"] (\opts -> setboolopt "used" opts) "show account names referenced by transactions"
|
||||
,flagNone ["tree"] (\opts -> setboolopt "tree" opts) "show short account names, as a tree"
|
||||
|
||||
27
hledger/Hledger/Cli/Commands/Accounts.txt
Normal file
27
hledger/Hledger/Cli/Commands/Accounts.txt
Normal file
@ -0,0 +1,27 @@
|
||||
accounts, a\
|
||||
Show account names.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
This command lists account names, either declared with account
|
||||
directives (\--declared), posted to (\--used), or both (the default).
|
||||
With query arguments, only matched account names and account names
|
||||
referenced by matched postings are shown. It shows a flat list by
|
||||
default. With `--tree`, it uses indentation to show the account
|
||||
hierarchy. In flat mode you can add `--drop N` to omit the first few
|
||||
account name components. Account names can be depth-clipped with
|
||||
`depth:N` or `--depth N` or `-N`.
|
||||
|
||||
Examples:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger accounts
|
||||
assets:bank:checking
|
||||
assets:bank:saving
|
||||
assets:cash
|
||||
expenses:food
|
||||
expenses:supplies
|
||||
income:gifts
|
||||
income:salary
|
||||
liabilities:debts
|
||||
```
|
||||
@ -20,7 +20,7 @@ import Prelude hiding (putStr)
|
||||
import Hledger.Utils.UTF8IOCompat (putStr)
|
||||
|
||||
activitymode = hledgerCommandMode
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Activity.md")
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Activity.txt")
|
||||
[]
|
||||
[generalflagsgroup1]
|
||||
[]
|
||||
|
||||
18
hledger/Hledger/Cli/Commands/Activity.txt
Normal file
18
hledger/Hledger/Cli/Commands/Activity.txt
Normal file
@ -0,0 +1,18 @@
|
||||
activity\
|
||||
Show an ascii barchart of posting counts per interval.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
The activity command displays an ascii histogram showing transaction
|
||||
counts by day, week, month or other reporting interval (by day is the
|
||||
default). With query arguments, it counts only matched transactions.
|
||||
|
||||
Examples:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger activity --quarterly
|
||||
2008-01-01 **
|
||||
2008-04-01 *******
|
||||
2008-07-01
|
||||
2008-10-01 **
|
||||
```
|
||||
@ -48,7 +48,7 @@ import Hledger.Cli.Commands.Register (postingsReportAsText)
|
||||
|
||||
|
||||
addmode = hledgerCommandMode
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Add.md")
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Add.txt")
|
||||
[flagNone ["no-new-accounts"] (\opts -> setboolopt "no-new-accounts" opts) "don't allow creating new accounts"]
|
||||
[generalflagsgroup2]
|
||||
[]
|
||||
|
||||
70
hledger/Hledger/Cli/Commands/Add.txt
Normal file
70
hledger/Hledger/Cli/Commands/Add.txt
Normal file
@ -0,0 +1,70 @@
|
||||
add\
|
||||
Prompt for transactions and add them to the journal.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
Many hledger users edit their journals directly with a text editor, or
|
||||
generate them from CSV. For more interactive data entry, there is the
|
||||
`add` command, which prompts interactively on the console for new
|
||||
transactions, and appends them to the journal file (if there are
|
||||
multiple `-f FILE` options, the first file is used.) Existing
|
||||
transactions are not changed. This is the only hledger command that
|
||||
writes to the journal file.
|
||||
|
||||
To use it, just run `hledger add` and follow the prompts. You can add as
|
||||
many transactions as you like; when you are finished, enter `.` or press
|
||||
control-d or control-c to exit.
|
||||
|
||||
Features:
|
||||
|
||||
- add tries to provide useful defaults, using the most similar (by
|
||||
description) recent transaction (filtered by the query, if any) as a
|
||||
template.
|
||||
- You can also set the initial defaults with command line arguments.
|
||||
- [Readline-style edit
|
||||
keys](http://tiswww.case.edu/php/chet/readline/rluserman.html#SEC3)
|
||||
can be used during data entry.
|
||||
- The tab key will auto-complete whenever possible - accounts,
|
||||
descriptions, dates (`yesterday`, `today`, `tomorrow`). If the input
|
||||
area is empty, it will insert the default value.
|
||||
- If the journal defines a [default commodity](#default-commodity), it
|
||||
will be added to any bare numbers entered.
|
||||
- A parenthesised transaction [code](#entries) may be entered
|
||||
following a date.
|
||||
- [Comments](#comments) and tags may be entered following a
|
||||
description or amount.
|
||||
- If you make a mistake, enter `<` at any prompt to restart the
|
||||
transaction.
|
||||
- Input prompts are displayed in a different colour when the terminal
|
||||
supports it.
|
||||
|
||||
Example (see the
|
||||
[tutorial](step-by-step.html#record-a-transaction-with-hledger-add) for
|
||||
a detailed explanation):
|
||||
|
||||
``` {.shell}
|
||||
$ hledger add
|
||||
Adding transactions to journal file /src/hledger/examples/sample.journal
|
||||
Any command line arguments will be used as defaults.
|
||||
Use tab key to complete, readline keys to edit, enter to accept defaults.
|
||||
An optional (CODE) may follow transaction dates.
|
||||
An optional ; COMMENT may follow descriptions or amounts.
|
||||
If you make a mistake, enter < at any prompt to restart the transaction.
|
||||
To end a transaction, enter . when prompted.
|
||||
To quit, enter . at a date prompt or press control-d or control-c.
|
||||
Date [2015/05/22]:
|
||||
Description: supermarket
|
||||
Account 1: expenses:food
|
||||
Amount 1: $10
|
||||
Account 2: assets:checking
|
||||
Amount 2 [$-10.0]:
|
||||
Account 3 (or . or enter to finish this transaction): .
|
||||
2015/05/22 supermarket
|
||||
expenses:food $10
|
||||
assets:checking $-10.0
|
||||
|
||||
Save this transaction to the journal ? [y]:
|
||||
Saved.
|
||||
Starting the next transaction (. or ctrl-D/ctrl-C to quit)
|
||||
Date [2015/05/22]: <CTRL-D> $
|
||||
```
|
||||
@ -270,7 +270,7 @@ import Hledger.Read.CsvReader (CSV, printCSV)
|
||||
|
||||
-- | Command line options for this command.
|
||||
balancemode = hledgerCommandMode
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Balance.md")
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Balance.txt")
|
||||
([flagNone ["change"] (\opts -> setboolopt "change" opts)
|
||||
"show balance change in each period (default)"
|
||||
,flagNone ["cumulative"] (\opts -> setboolopt "cumulative" opts)
|
||||
|
||||
508
hledger/Hledger/Cli/Commands/Balance.txt
Normal file
508
hledger/Hledger/Cli/Commands/Balance.txt
Normal file
@ -0,0 +1,508 @@
|
||||
balance, bal, b\
|
||||
Show accounts and their balances.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
The balance command is hledger\'s most versatile command. Note, despite
|
||||
the name, it is not always used for showing real-world account balances;
|
||||
the more accounting-aware [balancesheet](#balancesheet) and
|
||||
[incomestatement](#incomestatement) may be more convenient for that.
|
||||
|
||||
By default, it displays all accounts, and each account\'s change in
|
||||
balance during the entire period of the journal. Balance changes are
|
||||
calculated by adding up the postings in each account. You can limit the
|
||||
postings matched, by a [query](#queries), to see fewer accounts, changes
|
||||
over a different time period, changes from only cleared transactions,
|
||||
etc.
|
||||
|
||||
If you include an account\'s complete history of postings in the report,
|
||||
the balance change is equivalent to the account\'s current ending
|
||||
balance. For a real-world account, typically you won\'t have all
|
||||
transactions in the journal; instead you\'ll have all transactions after
|
||||
a certain date, and an \"opening balances\" transaction setting the
|
||||
correct starting balance on that date. Then the balance command will
|
||||
show real-world account balances. In some cases the -H/\--historical
|
||||
flag is used to ensure this (more below).
|
||||
|
||||
The balance command can produce several styles of report:
|
||||
|
||||
### Classic balance report
|
||||
|
||||
This is the original balance report, as found in Ledger. It usually
|
||||
looks like this:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance
|
||||
$-1 assets
|
||||
$1 bank:saving
|
||||
$-2 cash
|
||||
$2 expenses
|
||||
$1 food
|
||||
$1 supplies
|
||||
$-2 income
|
||||
$-1 gifts
|
||||
$-1 salary
|
||||
$1 liabilities:debts
|
||||
--------------------
|
||||
0
|
||||
```
|
||||
|
||||
By default, accounts are displayed hierarchically, with subaccounts
|
||||
indented below their parent. At each level of the tree, accounts are
|
||||
sorted by [account code](/manual.html#declaring-accounts) if any, then
|
||||
by account name. Or with `-S/--sort-amount`, by their balance amount.
|
||||
|
||||
\"Boring\" accounts, which contain a single interesting subaccount and
|
||||
no balance of their own, are elided into the following line for more
|
||||
compact output. (Eg above, the \"liabilities\" account.) Use
|
||||
`--no-elide` to prevent this.
|
||||
|
||||
Account balances are \"inclusive\" - they include the balances of any
|
||||
subaccounts.
|
||||
|
||||
Accounts which have zero balance (and no non-zero subaccounts) are
|
||||
omitted. Use `-E/--empty` to show them.
|
||||
|
||||
A final total is displayed by default; use `-N/--no-total` to suppress
|
||||
it, eg:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance -p 2008/6 expenses --no-total
|
||||
$2 expenses
|
||||
$1 food
|
||||
$1 supplies
|
||||
```
|
||||
|
||||
### Customising the classic balance report
|
||||
|
||||
You can customise the layout of classic balance reports with
|
||||
`--format FMT`:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance --format "%20(account) %12(total)"
|
||||
assets $-1
|
||||
bank:saving $1
|
||||
cash $-2
|
||||
expenses $2
|
||||
food $1
|
||||
supplies $1
|
||||
income $-2
|
||||
gifts $-1
|
||||
salary $-1
|
||||
liabilities:debts $1
|
||||
---------------------------------
|
||||
0
|
||||
```
|
||||
|
||||
The FMT format string (plus a newline) specifies the formatting applied
|
||||
to each account/balance pair. It may contain any suitable text, with
|
||||
data fields interpolated like so:
|
||||
|
||||
`%[MIN][.MAX](FIELDNAME)`
|
||||
|
||||
- MIN pads with spaces to at least this width (optional)
|
||||
- MAX truncates at this width (optional)
|
||||
- FIELDNAME must be enclosed in parentheses, and can be one of:
|
||||
|
||||
- `depth_spacer` - a number of spaces equal to the account\'s
|
||||
depth, or if MIN is specified, MIN \* depth spaces.
|
||||
- `account` - the account\'s name
|
||||
- `total` - the account\'s balance/posted total, right justified
|
||||
|
||||
Also, FMT can begin with an optional prefix to control how
|
||||
multi-commodity amounts are rendered:
|
||||
|
||||
- `%_` - render on multiple lines, bottom-aligned (the default)
|
||||
- `%^` - render on multiple lines, top-aligned
|
||||
- `%,` - render on one line, comma-separated
|
||||
|
||||
There are some quirks. Eg in one-line mode, `%(depth_spacer)` has no
|
||||
effect, instead `%(account)` has indentation built in. <!-- XXX retest:
|
||||
Consistent column widths are not well enforced, causing ragged edges unless you set suitable widths.
|
||||
Beware of specifying a maximum width; it will clip account names and amounts that are too wide, with no visible indication.
|
||||
--> Experimentation may be needed to get pleasing results.
|
||||
|
||||
Some example formats:
|
||||
|
||||
- `%(total)` - the account\'s total
|
||||
- `%-20.20(account)` - the account\'s name, left justified, padded to
|
||||
20 characters and clipped at 20 characters
|
||||
- `%,%-50(account) %25(total)` - account name padded to 50
|
||||
characters, total padded to 20 characters, with multiple commodities
|
||||
rendered on one line
|
||||
- `%20(total) %2(depth_spacer)%-(account)` - the default format for
|
||||
the single-column balance report
|
||||
|
||||
### Colour support
|
||||
|
||||
The balance command shows negative amounts in red, if:
|
||||
|
||||
- the `TERM` environment variable is not set to `dumb`
|
||||
- the output is not being redirected or piped anywhere
|
||||
|
||||
### Flat mode
|
||||
|
||||
To see a flat list instead of the default hierarchical display, use
|
||||
`--flat`. In this mode, accounts (unless depth-clipped) show their full
|
||||
names and \"exclusive\" balance, excluding any subaccount balances. In
|
||||
this mode, you can also use `--drop N` to omit the first few account
|
||||
name components.
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance -p 2008/6 expenses -N --flat --drop 1
|
||||
$1 food
|
||||
$1 supplies
|
||||
```
|
||||
|
||||
### Depth limited balance reports
|
||||
|
||||
With `--depth N` or `depth:N` or just `-N`, balance reports show
|
||||
accounts only to the specified numeric depth. This is very useful to
|
||||
summarise a complex set of accounts and get an overview.
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance -N -1
|
||||
$-1 assets
|
||||
$2 expenses
|
||||
$-2 income
|
||||
$1 liabilities
|
||||
```
|
||||
|
||||
Flat-mode balance reports, which normally show exclusive balances, show
|
||||
inclusive balances at the depth limit.
|
||||
|
||||
<!-- $ for y in 2006 2007 2008 2009 2010; do echo; echo $y; hledger -f $y.journal balance ^expenses --depth 2; done -->
|
||||
### Multicolumn balance report
|
||||
|
||||
Multicolumn or tabular balance reports are a very useful hledger
|
||||
feature, and usually the preferred style. They share many of the above
|
||||
features, but they show the report as a table, with columns representing
|
||||
time periods. This mode is activated by providing a [reporting
|
||||
interval](#reporting-interval).
|
||||
|
||||
There are three types of multicolumn balance report, showing different
|
||||
information:
|
||||
|
||||
1. By default: each column shows the sum of postings in that period, ie
|
||||
the account\'s change of balance in that period. This is useful eg
|
||||
for a monthly income statement: <!--
|
||||
multicolumn income statement:
|
||||
|
||||
$ hledger balance ^income ^expense -p 'monthly this year' --depth 3
|
||||
|
||||
or cashflow statement:
|
||||
|
||||
$ hledger balance ^assets ^liabilities 'not:(receivable|payable)' -p 'weekly this month'
|
||||
-->
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance --quarterly income expenses -E
|
||||
Balance changes in 2008:
|
||||
|
||||
|| 2008q1 2008q2 2008q3 2008q4
|
||||
===================++=================================
|
||||
expenses:food || 0 $1 0 0
|
||||
expenses:supplies || 0 $1 0 0
|
||||
income:gifts || 0 $-1 0 0
|
||||
income:salary || $-1 0 0 0
|
||||
-------------------++---------------------------------
|
||||
|| $-1 $1 0 0
|
||||
```
|
||||
|
||||
2. With `--cumulative`: each column shows the ending balance for that
|
||||
period, accumulating the changes across periods, starting from 0 at
|
||||
the report start date:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance --quarterly income expenses -E --cumulative
|
||||
Ending balances (cumulative) in 2008:
|
||||
|
||||
|| 2008/03/31 2008/06/30 2008/09/30 2008/12/31
|
||||
===================++=================================================
|
||||
expenses:food || 0 $1 $1 $1
|
||||
expenses:supplies || 0 $1 $1 $1
|
||||
income:gifts || 0 $-1 $-1 $-1
|
||||
income:salary || $-1 $-1 $-1 $-1
|
||||
-------------------++-------------------------------------------------
|
||||
|| $-1 0 0 0
|
||||
```
|
||||
|
||||
3. With `--historical/-H`: each column shows the actual historical
|
||||
ending balance for that period, accumulating the changes across
|
||||
periods, starting from the actual balance at the report start date.
|
||||
This is useful eg for a multi-period balance sheet, and when you are
|
||||
showing only the data after a certain start date:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance ^assets ^liabilities --quarterly --historical --begin 2008/4/1
|
||||
Ending balances (historical) in 2008/04/01-2008/12/31:
|
||||
|
||||
|| 2008/06/30 2008/09/30 2008/12/31
|
||||
======================++=====================================
|
||||
assets:bank:checking || $1 $1 0
|
||||
assets:bank:saving || $1 $1 $1
|
||||
assets:cash || $-2 $-2 $-2
|
||||
liabilities:debts || 0 0 $1
|
||||
----------------------++-------------------------------------
|
||||
|| 0 0 0
|
||||
```
|
||||
|
||||
Multicolumn balance reports display accounts in flat mode by default; to
|
||||
see the hierarchy, use `--tree`.
|
||||
|
||||
With a reporting interval (like `--quarterly` above), the report
|
||||
start/end dates will be adjusted if necessary so that they encompass the
|
||||
displayed report periods. This is so that the first and last periods
|
||||
will be \"full\" and comparable to the others.
|
||||
|
||||
The `-E/--empty` flag does two things in multicolumn balance reports:
|
||||
first, the report will show all columns within the specified report
|
||||
period (without -E, leading and trailing columns with all zeroes are not
|
||||
shown). Second, all accounts which existed at the report start date will
|
||||
be considered, not just the ones with activity during the report period
|
||||
(use -E to include low-activity accounts which would otherwise would be
|
||||
omitted). With `--budget`, `--empty` also shows unbudgeted accounts.
|
||||
|
||||
The `-T/--row-total` flag adds an additional column showing the total
|
||||
for each row.
|
||||
|
||||
The `-A/--average` flag adds a column showing the average value in each
|
||||
row.
|
||||
|
||||
Here\'s an example of all three:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance -Q income expenses --tree -ETA
|
||||
Balance changes in 2008:
|
||||
|
||||
|| 2008q1 2008q2 2008q3 2008q4 Total Average
|
||||
============++===================================================
|
||||
expenses || 0 $2 0 0 $2 $1
|
||||
food || 0 $1 0 0 $1 0
|
||||
supplies || 0 $1 0 0 $1 0
|
||||
income || $-1 $-1 0 0 $-2 $-1
|
||||
gifts || 0 $-1 0 0 $-1 0
|
||||
salary || $-1 0 0 0 $-1 0
|
||||
------------++---------------------------------------------------
|
||||
|| $-1 $1 0 0 0 0
|
||||
|
||||
# Average is rounded to the dollar here since all journal amounts are
|
||||
```
|
||||
|
||||
Limitations:
|
||||
|
||||
In multicolumn reports the [`-V/--value` flag](#market-value) uses the
|
||||
market price on the report end date, for all columns (not the price on
|
||||
each column\'s end date).
|
||||
|
||||
Eliding of boring parent accounts in tree mode, as in the classic
|
||||
balance report, is not yet supported in multicolumn reports.
|
||||
|
||||
### Budget report
|
||||
|
||||
With `--budget`, extra columns are displayed showing budget goals for
|
||||
each account and period, if any. Budget goals are defined by [periodic
|
||||
transactions](journal.html#periodic-transactions). This is very useful
|
||||
for comparing planned and actual income, expenses, time usage, etc.
|
||||
\--budget is most often combined with a [report
|
||||
interval](manual.html#report-intervals).
|
||||
|
||||
For example, you can take average monthly expenses in the common expense
|
||||
categories to construct a minimal monthly budget:
|
||||
|
||||
``` {.journal}
|
||||
;; Budget
|
||||
~ monthly
|
||||
income $2000
|
||||
expenses:food $400
|
||||
expenses:bus $50
|
||||
expenses:movies $30
|
||||
assets:bank:checking
|
||||
|
||||
;; Two months worth of expenses
|
||||
2017-11-01
|
||||
income $1950
|
||||
expenses:food $396
|
||||
expenses:bus $49
|
||||
expenses:movies $30
|
||||
expenses:supplies $20
|
||||
assets:bank:checking
|
||||
|
||||
2017-12-01
|
||||
income $2100
|
||||
expenses:food $412
|
||||
expenses:bus $53
|
||||
expenses:gifts $100
|
||||
assets:bank:checking
|
||||
```
|
||||
|
||||
You can now see a monthly budget report:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance -M --budget
|
||||
Budget performance in 2017/11/01-2017/12/31:
|
||||
|
||||
|| Nov Dec
|
||||
======================++====================================================
|
||||
assets || $-2445 [ 99% of $-2480] $-2665 [ 107% of $-2480]
|
||||
assets:bank || $-2445 [ 99% of $-2480] $-2665 [ 107% of $-2480]
|
||||
assets:bank:checking || $-2445 [ 99% of $-2480] $-2665 [ 107% of $-2480]
|
||||
expenses || $495 [ 103% of $480] $565 [ 118% of $480]
|
||||
expenses:bus || $49 [ 98% of $50] $53 [ 106% of $50]
|
||||
expenses:food || $396 [ 99% of $400] $412 [ 103% of $400]
|
||||
expenses:movies || $30 [ 100% of $30] 0 [ 0% of $30]
|
||||
income || $1950 [ 98% of $2000] $2100 [ 105% of $2000]
|
||||
----------------------++----------------------------------------------------
|
||||
|| 0 [ 0] 0 [ 0]
|
||||
```
|
||||
|
||||
By default, only accounts with budget goals during the report period are
|
||||
shown. In the example above, transactions in `expenses:gifts` and
|
||||
`expenses:supplies` are counted towards `expenses` budget, but accounts
|
||||
`expenses:gifts` and `expenses:supplies` are not shown, as they don\'t
|
||||
have any budgets.
|
||||
|
||||
You can use `--empty` shows unbudgeted accounts as well:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance -M --budget --empty
|
||||
Budget performance in 2017/11/01-2017/12/31:
|
||||
|
||||
|| Nov Dec
|
||||
======================++====================================================
|
||||
assets || $-2445 [ 99% of $-2480] $-2665 [ 107% of $-2480]
|
||||
assets:bank || $-2445 [ 99% of $-2480] $-2665 [ 107% of $-2480]
|
||||
assets:bank:checking || $-2445 [ 99% of $-2480] $-2665 [ 107% of $-2480]
|
||||
expenses || $495 [ 103% of $480] $565 [ 118% of $480]
|
||||
expenses:bus || $49 [ 98% of $50] $53 [ 106% of $50]
|
||||
expenses:food || $396 [ 99% of $400] $412 [ 103% of $400]
|
||||
expenses:gifts || 0 $100
|
||||
expenses:movies || $30 [ 100% of $30] 0 [ 0% of $30]
|
||||
expenses:supplies || $20 0
|
||||
income || $1950 [ 98% of $2000] $2100 [ 105% of $2000]
|
||||
----------------------++----------------------------------------------------
|
||||
|| 0 [ 0] 0 [ 0]
|
||||
```
|
||||
|
||||
You can roll over unspent budgets to next period with `--cumulative`:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance -M --budget --cumulative
|
||||
Budget performance in 2017/11/01-2017/12/31:
|
||||
|
||||
|| Nov Dec
|
||||
======================++====================================================
|
||||
assets || $-2445 [ 99% of $-2480] $-5110 [ 103% of $-4960]
|
||||
assets:bank || $-2445 [ 99% of $-2480] $-5110 [ 103% of $-4960]
|
||||
assets:bank:checking || $-2445 [ 99% of $-2480] $-5110 [ 103% of $-4960]
|
||||
expenses || $495 [ 103% of $480] $1060 [ 110% of $960]
|
||||
expenses:bus || $49 [ 98% of $50] $102 [ 102% of $100]
|
||||
expenses:food || $396 [ 99% of $400] $808 [ 101% of $800]
|
||||
expenses:movies || $30 [ 100% of $30] $30 [ 50% of $60]
|
||||
income || $1950 [ 98% of $2000] $4050 [ 101% of $4000]
|
||||
----------------------++----------------------------------------------------
|
||||
|| 0 [ 0] 0 [ 0]
|
||||
```
|
||||
|
||||
Note, the `-S/--sort-amount` flag is not yet fully supported with
|
||||
`--budget`.
|
||||
|
||||
For more examples, see [Budgeting and
|
||||
Forecasting](https://github.com/simonmichael/hledger/wiki/Budgeting%20and%20forecasting).
|
||||
|
||||
#### Nested budgets
|
||||
|
||||
You can add budgets to any account in your account hierarchy. If you
|
||||
have budgets on both parent account and some of its children, then
|
||||
budget(s) of the child account(s) would be added to the budget of their
|
||||
parent, much like account balances behave.
|
||||
|
||||
In the most simple case this means that once you add a budget to any
|
||||
account, all its parents would have budget as well.
|
||||
|
||||
To illustrate this, consider the following budget:
|
||||
|
||||
~ monthly from 2019/01
|
||||
expenses:personal $1,000.00
|
||||
expenses:personal:electronics $100.00
|
||||
liabilities
|
||||
|
||||
With this, monthly budget for electronics is defined to be \$100 and
|
||||
budget for personal expenses is an additional \$1000, which implicity
|
||||
means that budget for both `expenses:personal` and `expenses` is \$1100.
|
||||
|
||||
Transactions in `expenses:personal:electronics` will be counted both
|
||||
towards its \$100 budget and \$1100 of `expenses:personal` , and
|
||||
transactions in any other subaccount of `expenses:personal` would be
|
||||
counted towards only towards the budget of `expenses:personal`.
|
||||
|
||||
For example, let\'s consider these transactions:
|
||||
|
||||
``` {.journal}
|
||||
~ monthly from 2019/01
|
||||
expenses:personal $1,000.00
|
||||
expenses:personal:electronics $100.00
|
||||
liabilities
|
||||
|
||||
2019/01/01 Google home hub
|
||||
expenses:personal:electronics $90.00
|
||||
liabilities $-90.00
|
||||
|
||||
2019/01/02 Phone screen protector
|
||||
expenses:personal:electronics:upgrades $10.00
|
||||
liabilities
|
||||
|
||||
2019/01/02 Weekly train ticket
|
||||
expenses:personal:train tickets $153.00
|
||||
liabilities
|
||||
|
||||
2019/01/03 Flowers
|
||||
expenses:personal $30.00
|
||||
liabilities
|
||||
```
|
||||
|
||||
As you can see, we have transactions in
|
||||
`expenses:personal:electronics:upgrades` and
|
||||
`expenses:personal:train tickets`, and since both of these accounts are
|
||||
without explicitly defined budget, these transactions would be counted
|
||||
towards budgets of `expenses:personal:electronics` and
|
||||
`expenses:personal` accordingly:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance --budget -M
|
||||
Budget performance in 2019/01:
|
||||
|
||||
|| Jan
|
||||
===============================++===============================
|
||||
expenses || $283.00 [ 26% of $1100.00]
|
||||
expenses:personal || $283.00 [ 26% of $1100.00]
|
||||
expenses:personal:electronics || $100.00 [ 100% of $100.00]
|
||||
liabilities || $-283.00 [ 26% of $-1100.00]
|
||||
-------------------------------++-------------------------------
|
||||
|| 0 [ 0]
|
||||
```
|
||||
|
||||
And with `--empty`, we can get a better picture of budget allocation and
|
||||
consumption:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balance --budget -M --empty
|
||||
Budget performance in 2019/01:
|
||||
|
||||
|| Jan
|
||||
========================================++===============================
|
||||
expenses || $283.00 [ 26% of $1100.00]
|
||||
expenses:personal || $283.00 [ 26% of $1100.00]
|
||||
expenses:personal:electronics || $100.00 [ 100% of $100.00]
|
||||
expenses:personal:electronics:upgrades || $10.00
|
||||
expenses:personal:train tickets || $153.00
|
||||
liabilities || $-283.00 [ 26% of $-1100.00]
|
||||
----------------------------------------++-------------------------------
|
||||
|| 0 [ 0]
|
||||
```
|
||||
|
||||
### Output format
|
||||
|
||||
The balance command supports [output
|
||||
destination](/manual.html#output-destination) and [output
|
||||
format](/manual.html#output-format) selection.
|
||||
@ -18,7 +18,7 @@ import Hledger.Cli.CliOptions
|
||||
import Hledger.Cli.CompoundBalanceCommand
|
||||
|
||||
balancesheetSpec = CompoundBalanceCommandSpec {
|
||||
cbcdoc = ($(hereFileRelative "Hledger/Cli/Commands/Balancesheet.md")),
|
||||
cbcdoc = ($(hereFileRelative "Hledger/Cli/Commands/Balancesheet.txt")),
|
||||
cbctitle = "Balance Sheet",
|
||||
cbcqueries = [
|
||||
CBCSubreportSpec{
|
||||
|
||||
45
hledger/Hledger/Cli/Commands/Balancesheet.txt
Normal file
45
hledger/Hledger/Cli/Commands/Balancesheet.txt
Normal file
@ -0,0 +1,45 @@
|
||||
balancesheet, bs\
|
||||
This command displays a simple balance sheet, showing historical ending
|
||||
balances of asset and liability accounts (ignoring any report begin
|
||||
date). It assumes that these accounts are under a top-level `asset` or
|
||||
`liability` account (case insensitive, plural forms also allowed).
|
||||
|
||||
Note this report shows all account balances with normal positive sign
|
||||
(like conventional financial statements, unlike balance/print/register)
|
||||
(experimental).
|
||||
|
||||
*FLAGS*
|
||||
|
||||
Example:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balancesheet
|
||||
Balance Sheet
|
||||
|
||||
Assets:
|
||||
$-1 assets
|
||||
$1 bank:saving
|
||||
$-2 cash
|
||||
--------------------
|
||||
$-1
|
||||
|
||||
Liabilities:
|
||||
$1 liabilities:debts
|
||||
--------------------
|
||||
$1
|
||||
|
||||
Total:
|
||||
--------------------
|
||||
0
|
||||
```
|
||||
|
||||
With a [reporting interval](#reporting-interval), multiple columns will
|
||||
be shown, one for each report period. As with [multicolumn balance
|
||||
reports](#multicolumn-balance-reports), you can alter the report mode
|
||||
with `--change`/`--cumulative`/`--historical`. Normally balancesheet
|
||||
shows historical ending balances, which is what you need for a balance
|
||||
sheet; note this means it ignores report begin dates.
|
||||
|
||||
This command also supports [output
|
||||
destination](/manual.html#output-destination) and [output
|
||||
format](/manual.html#output-format) selection.
|
||||
@ -18,7 +18,7 @@ import Hledger.Cli.CliOptions
|
||||
import Hledger.Cli.CompoundBalanceCommand
|
||||
|
||||
balancesheetequitySpec = CompoundBalanceCommandSpec {
|
||||
cbcdoc = ($(hereFileRelative "Hledger/Cli/Commands/Balancesheetequity.md")),
|
||||
cbcdoc = ($(hereFileRelative "Hledger/Cli/Commands/Balancesheetequity.txt")),
|
||||
cbctitle = "Balance Sheet With Equity",
|
||||
cbcqueries = [
|
||||
CBCSubreportSpec{
|
||||
|
||||
33
hledger/Hledger/Cli/Commands/Balancesheetequity.txt
Normal file
33
hledger/Hledger/Cli/Commands/Balancesheetequity.txt
Normal file
@ -0,0 +1,33 @@
|
||||
balancesheetequity, bse\
|
||||
Just like [balancesheet](#balancesheet), but also reports Equity (which
|
||||
it assumes is under a top-level `equity` account).
|
||||
|
||||
*FLAGS*
|
||||
|
||||
Example:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger balancesheetequity
|
||||
Balance Sheet With Equity
|
||||
|
||||
Assets:
|
||||
$-2 assets
|
||||
$1 bank:saving
|
||||
$-3 cash
|
||||
--------------------
|
||||
$-2
|
||||
|
||||
Liabilities:
|
||||
$1 liabilities:debts
|
||||
--------------------
|
||||
$1
|
||||
|
||||
Equity:
|
||||
$1 equity:owner
|
||||
--------------------
|
||||
$1
|
||||
|
||||
Total:
|
||||
--------------------
|
||||
0
|
||||
```
|
||||
@ -21,7 +21,7 @@ import Hledger.Cli.CliOptions
|
||||
import Hledger.Cli.CompoundBalanceCommand
|
||||
|
||||
cashflowSpec = CompoundBalanceCommandSpec {
|
||||
cbcdoc = ($(hereFileRelative "Hledger/Cli/Commands/Cashflow.md")),
|
||||
cbcdoc = ($(hereFileRelative "Hledger/Cli/Commands/Cashflow.txt")),
|
||||
cbctitle = "Cashflow Statement",
|
||||
cbcqueries = [
|
||||
CBCSubreportSpec{
|
||||
|
||||
37
hledger/Hledger/Cli/Commands/Cashflow.txt
Normal file
37
hledger/Hledger/Cli/Commands/Cashflow.txt
Normal file
@ -0,0 +1,37 @@
|
||||
cashflow, cf\
|
||||
This command displays a simple cashflow statement, showing changes in
|
||||
\"cash\" accounts. It assumes that these accounts are under a top-level
|
||||
`asset` account (case insensitive, plural forms also allowed) and do not
|
||||
contain `receivable` or `A/R` in their name. Note this report shows all
|
||||
account balances with normal positive sign (like conventional financial
|
||||
statements, unlike balance/print/register) (experimental).
|
||||
|
||||
*FLAGS*
|
||||
|
||||
Example:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger cashflow
|
||||
Cashflow Statement
|
||||
|
||||
Cash flows:
|
||||
$-1 assets
|
||||
$1 bank:saving
|
||||
$-2 cash
|
||||
--------------------
|
||||
$-1
|
||||
|
||||
Total:
|
||||
--------------------
|
||||
$-1
|
||||
```
|
||||
|
||||
With a [reporting interval](#reporting-interval), multiple columns will
|
||||
be shown, one for each report period. Normally cashflow shows changes in
|
||||
assets per period, though as with [multicolumn balance
|
||||
reports](#multicolumn-balance-reports) you can alter the report mode
|
||||
with `--change`/`--cumulative`/`--historical`.
|
||||
|
||||
This command also supports [output
|
||||
destination](/manual.html#output-destination) and [output
|
||||
format](/manual.html#output-format) selection.
|
||||
@ -13,7 +13,7 @@ import Text.Printf
|
||||
|
||||
checkdatesmode :: Mode RawOpts
|
||||
checkdatesmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Checkdates.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Checkdates.txt"))
|
||||
[flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"]
|
||||
[generalflagsgroup1]
|
||||
[]
|
||||
|
||||
7
hledger/Hledger/Cli/Commands/Checkdates.txt
Normal file
7
hledger/Hledger/Cli/Commands/Checkdates.txt
Normal file
@ -0,0 +1,7 @@
|
||||
check-dates\
|
||||
Check that transactions are sorted by increasing date. With \--date2,
|
||||
checks secondary dates instead. With \--strict, dates must also be
|
||||
unique. With a query, only matched transactions\' dates are checked.
|
||||
Reads the default journal file, or another specified with -f.
|
||||
|
||||
*FLAGS*
|
||||
@ -16,7 +16,7 @@ import Text.Printf
|
||||
|
||||
checkdupesmode :: Mode RawOpts
|
||||
checkdupesmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Checkdupes.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Checkdupes.txt"))
|
||||
[]
|
||||
[generalflagsgroup1]
|
||||
[]
|
||||
|
||||
8
hledger/Hledger/Cli/Commands/Checkdupes.txt
Normal file
8
hledger/Hledger/Cli/Commands/Checkdupes.txt
Normal file
@ -0,0 +1,8 @@
|
||||
check-dupes\
|
||||
Reports account names having the same leaf but different prefixes. In
|
||||
other words, two or more leaves that are categorized differently. Reads
|
||||
the default journal file, or another specified as an argument.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
An example: http://stefanorodighiero.net/software/hledger-dupes.html
|
||||
@ -16,7 +16,7 @@ import Hledger
|
||||
import Hledger.Cli.CliOptions
|
||||
|
||||
closemode = hledgerCommandMode
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Close.md")
|
||||
$(hereFileRelative "Hledger/Cli/Commands/Close.txt")
|
||||
[flagNone ["opening"] (\opts -> setboolopt "opening" opts) "show just opening transaction"
|
||||
,flagNone ["closing"] (\opts -> setboolopt "closing" opts) "show just closing transaction"
|
||||
]
|
||||
|
||||
79
hledger/Hledger/Cli/Commands/Close.txt
Normal file
79
hledger/Hledger/Cli/Commands/Close.txt
Normal file
@ -0,0 +1,79 @@
|
||||
close, equity\
|
||||
Prints a \"closing balances\" transaction and an \"opening balances\"
|
||||
transaction that bring account balances to and from zero, respectively.
|
||||
Useful for bringing asset/liability balances forward into a new journal
|
||||
file, or for closing out revenues/expenses to retained earnings at the
|
||||
end of a period.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
The closing transaction transfers balances to \"equity:closing
|
||||
balances\". The opening transaction transfers balances from
|
||||
\"equity:opening balances\". You can chose to print just one of the
|
||||
transactions by using the `--opening` or `--closing` flag.
|
||||
|
||||
If you split your journal files by time (eg yearly), you will typically
|
||||
run this command at the end of the year, and save the closing
|
||||
transaction as last entry of the old file, and the opening transaction
|
||||
as the first entry of the new file. This makes the files self contained,
|
||||
so that correct balances are reported no matter which of them are
|
||||
loaded. Ie, if you load just one file, the balances are initialised
|
||||
correctly; or if you load several files, the redundant closing/opening
|
||||
transactions cancel each other out. (They will show up in print or
|
||||
register reports; you can exclude them with a query like
|
||||
`not:desc:'(opening|closing) balances'`.)
|
||||
|
||||
If you\'re running a business, you might also use this command to
|
||||
\"close the books\" at the end of an accounting period, transferring
|
||||
income statement account balances to retained earnings. (You may want to
|
||||
change the equity account name to something like \"equity:retained
|
||||
earnings\".)
|
||||
|
||||
By default, the closing transaction is dated yesterday, the balances are
|
||||
calculated as of end of yesterday, and the opening transaction is dated
|
||||
today. To close on some other date, use: `hledger close -e OPENINGDATE`.
|
||||
Eg, to close/open on the 2018/2019 boundary, use `-e 2019`. You can also
|
||||
use -p or `date:PERIOD` (any starting date is ignored).
|
||||
|
||||
Both transactions will include balance assertions for the
|
||||
closed/reopened accounts. You probably shouldn\'t use status or realness
|
||||
filters (like -C or -R or `status:`) with this command, or the generated
|
||||
balance assertions will depend on these flags. Likewise, if you run this
|
||||
command with \--auto, the balance assertions will probably always
|
||||
require \--auto.
|
||||
|
||||
Examples:
|
||||
|
||||
Carrying asset/liability balances into a new file for 2019, all from
|
||||
command line:
|
||||
|
||||
*Warning: we use `>>` here to append; be careful not to type a single
|
||||
`>` which would wipe your journal!*
|
||||
|
||||
$ hledger close -f 2018.journal -e 2019 assets liabilities --opening >>2019.journal
|
||||
$ hledger close -f 2018.journal -e 2019 assets liabilities --closing >>2018.journal
|
||||
|
||||
Now:
|
||||
|
||||
$ hledger bs -f 2019.journal # one file - balances are correct
|
||||
$ hledger bs -f 2018.journal -f 2019.journal # two files - balances still correct
|
||||
$ hledger bs -f 2018.journal not:desc:closing # to see year-end balances, must exclude closing txn
|
||||
|
||||
Transactions spanning the closing date can complicate matters, breaking
|
||||
balance assertions:
|
||||
|
||||
2018/12/30 a purchase made in 2018, clearing the following year
|
||||
expenses:food 5
|
||||
assets:bank:checking -5 ; [2019/1/2]
|
||||
|
||||
Here\'s one way to resolve that:
|
||||
|
||||
; in 2018.journal:
|
||||
2018/12/30 a purchase made in 2018, clearing the following year
|
||||
expenses:food 5
|
||||
liabilities:pending
|
||||
|
||||
; in 2019.journal:
|
||||
2019/1/2 clearance of last year's pending transactions
|
||||
liabilities:pending 5 = 0
|
||||
assets:checking
|
||||
@ -23,7 +23,7 @@ import Hledger.Cli.CliOptions
|
||||
|
||||
-- | Command line options for this command.
|
||||
filesmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Files.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Files.txt"))
|
||||
[]
|
||||
[generalflagsgroup2]
|
||||
[]
|
||||
|
||||
5
hledger/Hledger/Cli/Commands/Files.txt
Normal file
5
hledger/Hledger/Cli/Commands/Files.txt
Normal file
@ -0,0 +1,5 @@
|
||||
files\
|
||||
List all files included in the journal. With a REGEX argument, only file
|
||||
names matching the regular expression (case sensitive) are shown.
|
||||
|
||||
*FLAGS*
|
||||
@ -36,7 +36,7 @@ import Hledger.Cli.DocFiles
|
||||
--import Hledger.Utils.Debug
|
||||
|
||||
helpmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Help.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Help.txt"))
|
||||
[flagNone ["info"] (setboolopt "info") "show the manual with info"
|
||||
,flagNone ["man"] (setboolopt "man") "show the manual with man"
|
||||
,flagNone ["pager"] (setboolopt "pager") "show the manual with $PAGER or less"
|
||||
|
||||
40
hledger/Hledger/Cli/Commands/Help.txt
Normal file
40
hledger/Hledger/Cli/Commands/Help.txt
Normal file
@ -0,0 +1,40 @@
|
||||
help\
|
||||
Show any of the hledger manuals.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
The `help` command displays any of the main [hledger
|
||||
manuals](/docs.html), in one of several ways. Run it with no argument to
|
||||
list the manuals, or provide a full or partial manual name to select
|
||||
one.
|
||||
|
||||
hledger manuals are available in several formats. hledger help will use
|
||||
the first of these display methods that it finds: info, man, \$PAGER,
|
||||
less, stdout (or when non-interactive, just stdout). You can force a
|
||||
particular viewer with the `--info`, `--man`, `--pager`, `--cat` flags.
|
||||
|
||||
Examples:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger help
|
||||
Please choose a manual by typing "hledger help MANUAL" (a substring is ok).
|
||||
Manuals: hledger hledger-ui hledger-web hledger-api journal csv timeclock timedot
|
||||
```
|
||||
|
||||
``` {.shell}
|
||||
$ hledger help h --man
|
||||
|
||||
hledger(1) hledger User Manuals hledger(1)
|
||||
|
||||
NAME
|
||||
hledger - a command-line accounting tool
|
||||
|
||||
SYNOPSIS
|
||||
hledger [-f FILE] COMMAND [OPTIONS] [ARGS]
|
||||
hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]
|
||||
hledger
|
||||
|
||||
DESCRIPTION
|
||||
hledger is a cross-platform program for tracking money, time, or any
|
||||
...
|
||||
```
|
||||
@ -18,7 +18,7 @@ import System.Console.CmdArgs.Explicit
|
||||
import Text.Printf
|
||||
|
||||
importmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Import.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Import.txt"))
|
||||
[flagNone ["dry-run"] (\opts -> setboolopt "dry-run" opts) "just show the transactions to be imported"]
|
||||
[generalflagsgroup1]
|
||||
[]
|
||||
|
||||
21
hledger/Hledger/Cli/Commands/Import.txt
Normal file
21
hledger/Hledger/Cli/Commands/Import.txt
Normal file
@ -0,0 +1,21 @@
|
||||
import\
|
||||
Read new transactions added to each FILE since last run, and add them to
|
||||
the main journal file. Or with \--dry-run, just print the transactions
|
||||
that would be added.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
The input files are specified as arguments - no need to write -f before
|
||||
each one. So eg to add new transactions from all CSV files to the main
|
||||
journal, it\'s just: `hledger import *.csv`
|
||||
|
||||
New transactions are detected in the same way as print \--new: by
|
||||
assuming transactions are always added to the input files in increasing
|
||||
date order, and by saving `.latest.FILE` state files.
|
||||
|
||||
The \--dry-run output is in journal format, so you can filter it, eg to
|
||||
see only uncategorised transactions:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger import --dry ... | hledger -f- print unknown --ignore-assertions
|
||||
```
|
||||
@ -17,7 +17,7 @@ import Hledger.Cli.CliOptions
|
||||
import Hledger.Cli.CompoundBalanceCommand
|
||||
|
||||
incomestatementSpec = CompoundBalanceCommandSpec {
|
||||
cbcdoc = ($(hereFileRelative "Hledger/Cli/Commands/Incomestatement.md")),
|
||||
cbcdoc = ($(hereFileRelative "Hledger/Cli/Commands/Incomestatement.txt")),
|
||||
cbctitle = "Income Statement",
|
||||
cbcqueries = [
|
||||
CBCSubreportSpec{
|
||||
|
||||
47
hledger/Hledger/Cli/Commands/Incomestatement.txt
Normal file
47
hledger/Hledger/Cli/Commands/Incomestatement.txt
Normal file
@ -0,0 +1,47 @@
|
||||
incomestatement, is\
|
||||
This command displays a simple income statement, showing revenues and
|
||||
expenses during a period. It assumes that these accounts are under a
|
||||
top-level `revenue` or `income` or `expense` account (case insensitive,
|
||||
plural forms also allowed). Note this report shows all account balances
|
||||
with normal positive sign (like conventional financial statements,
|
||||
unlike balance/print/register) (experimental).
|
||||
|
||||
*FLAGS*
|
||||
|
||||
This command displays a simple [income
|
||||
statement](http://en.wikipedia.org/wiki/Income_statement). It currently
|
||||
assumes that you have top-level accounts named `income` (or `revenue`)
|
||||
and `expense` (plural forms also allowed.)
|
||||
|
||||
``` {.shell}
|
||||
$ hledger incomestatement
|
||||
Income Statement
|
||||
|
||||
Revenues:
|
||||
$-2 income
|
||||
$-1 gifts
|
||||
$-1 salary
|
||||
--------------------
|
||||
$-2
|
||||
|
||||
Expenses:
|
||||
$2 expenses
|
||||
$1 food
|
||||
$1 supplies
|
||||
--------------------
|
||||
$2
|
||||
|
||||
Total:
|
||||
--------------------
|
||||
0
|
||||
```
|
||||
|
||||
With a [reporting interval](#reporting-interval), multiple columns will
|
||||
be shown, one for each report period. Normally incomestatement shows
|
||||
revenues/expenses per period, though as with [multicolumn balance
|
||||
reports](#multicolumn-balance-reports) you can alter the report mode
|
||||
with `--change`/`--cumulative`/`--historical`.
|
||||
|
||||
This command also supports [output
|
||||
destination](/manual.html#output-destination) and [output
|
||||
format](/manual.html#output-format) selection.
|
||||
@ -15,7 +15,7 @@ import Hledger.Cli.CliOptions
|
||||
import System.Console.CmdArgs.Explicit
|
||||
|
||||
pricesmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Prices.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Prices.txt"))
|
||||
[flagNone ["costs"] (setboolopt "costs") "print transaction prices from postings"
|
||||
,flagNone ["inverted-costs"] (setboolopt "inverted-costs") "print transaction inverted prices from postings also"]
|
||||
[generalflagsgroup1]
|
||||
|
||||
8
hledger/Hledger/Cli/Commands/Prices.txt
Normal file
8
hledger/Hledger/Cli/Commands/Prices.txt
Normal file
@ -0,0 +1,8 @@
|
||||
prices\
|
||||
Print [market price directives](/manual#market-prices) from the journal.
|
||||
With \--costs, also print synthetic market prices based on [transaction
|
||||
prices](/manual#transaction-prices). With \--inverted-costs, also print
|
||||
inverse prices based on transaction prices. Prices (and postings
|
||||
providing prices) can be filtered by a query.
|
||||
|
||||
*FLAGS*
|
||||
@ -27,7 +27,7 @@ import Hledger.Cli.Commands.Add ( transactionsSimilarTo )
|
||||
|
||||
|
||||
printmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Print.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Print.txt"))
|
||||
[let arg = "STR" in
|
||||
flagReq ["match","m"] (\s opts -> Right $ setopt "match" s opts) arg
|
||||
("show the transaction whose description is most similar to "++arg++", and is most recent")
|
||||
|
||||
105
hledger/Hledger/Cli/Commands/Print.txt
Normal file
105
hledger/Hledger/Cli/Commands/Print.txt
Normal file
@ -0,0 +1,105 @@
|
||||
print, txns, p\
|
||||
Show transaction journal entries, sorted by date.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
The print command displays full journal entries (transactions) from the
|
||||
journal file in date order, tidily formatted. With \--date2,
|
||||
transactions are sorted by secondary date instead.
|
||||
|
||||
print\'s output is always a valid [hledger journal](/journal.html).\
|
||||
It preserves all transaction information, but it does not preserve
|
||||
directives or inter-transaction comments
|
||||
|
||||
``` {.shell}
|
||||
$ hledger print
|
||||
2008/01/01 income
|
||||
assets:bank:checking $1
|
||||
income:salary $-1
|
||||
|
||||
2008/06/01 gift
|
||||
assets:bank:checking $1
|
||||
income:gifts $-1
|
||||
|
||||
2008/06/02 save
|
||||
assets:bank:saving $1
|
||||
assets:bank:checking $-1
|
||||
|
||||
2008/06/03 * eat & shop
|
||||
expenses:food $1
|
||||
expenses:supplies $1
|
||||
assets:cash $-2
|
||||
|
||||
2008/12/31 * pay off
|
||||
liabilities:debts $1
|
||||
assets:bank:checking $-1
|
||||
```
|
||||
|
||||
Normally, the journal entry\'s explicit or implicit amount style is
|
||||
preserved. Ie when an amount is omitted in the journal, it will be
|
||||
omitted in the output. You can use the `-x`/`--explicit` flag to make
|
||||
all amounts explicit, which can be useful for troubleshooting or for
|
||||
making your journal more readable and robust against data entry errors.
|
||||
Note, `-x` will cause postings with a multi-commodity amount (these can
|
||||
arise when a multi-commodity transaction has an implicit amount) will be
|
||||
split into multiple single-commodity postings, for valid journal output.
|
||||
|
||||
With `-B`/`--cost`, amounts with [transaction
|
||||
prices](/journal.html#transaction-prices) are converted to cost using
|
||||
that price. This can be used for troubleshooting.
|
||||
|
||||
With `-m`/`--match` and a STR argument, print will show at most one
|
||||
transaction: the one one whose description is most similar to STR, and
|
||||
is most recent. STR should contain at least two characters. If there is
|
||||
no similar-enough match, no transaction will be shown.
|
||||
|
||||
With `--new`, for each FILE being read, hledger reads (and writes) a
|
||||
special state file (`.latest.FILE` in the same directory), containing
|
||||
the latest transaction date(s) that were seen last time FILE was read.
|
||||
When this file is found, only transactions with newer dates (and new
|
||||
transactions on the latest date) are printed. This is useful for
|
||||
ignoring already-seen entries in import data, such as downloaded CSV
|
||||
files. Eg:
|
||||
|
||||
``` {.console}
|
||||
$ hledger -f bank1.csv print --new
|
||||
# shows transactions added since last print --new on this file
|
||||
```
|
||||
|
||||
This assumes that transactions added to FILE always have same or
|
||||
increasing dates, and that transactions on the same day do not get
|
||||
reordered. See also the [import](#import) command.
|
||||
|
||||
This command also supports [output
|
||||
destination](/manual.html#output-destination) and [output
|
||||
format](/manual.html#output-format) selection. Here\'s an example of
|
||||
print\'s CSV output:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger print -Ocsv
|
||||
"txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting-status","posting-comment"
|
||||
"1","2008/01/01","","","","income","","assets:bank:checking","1","$","","1","",""
|
||||
"1","2008/01/01","","","","income","","income:salary","-1","$","1","","",""
|
||||
"2","2008/06/01","","","","gift","","assets:bank:checking","1","$","","1","",""
|
||||
"2","2008/06/01","","","","gift","","income:gifts","-1","$","1","","",""
|
||||
"3","2008/06/02","","","","save","","assets:bank:saving","1","$","","1","",""
|
||||
"3","2008/06/02","","","","save","","assets:bank:checking","-1","$","1","","",""
|
||||
"4","2008/06/03","","*","","eat & shop","","expenses:food","1","$","","1","",""
|
||||
"4","2008/06/03","","*","","eat & shop","","expenses:supplies","1","$","","1","",""
|
||||
"4","2008/06/03","","*","","eat & shop","","assets:cash","-2","$","2","","",""
|
||||
"5","2008/12/31","","*","","pay off","","liabilities:debts","1","$","","1","",""
|
||||
"5","2008/12/31","","*","","pay off","","assets:bank:checking","-1","$","1","","",""
|
||||
```
|
||||
|
||||
- There is one CSV record per posting, with the parent transaction\'s
|
||||
fields repeated.
|
||||
- The \"txnidx\" (transaction index) field shows which postings belong
|
||||
to the same transaction. (This number might change if transactions
|
||||
are reordered within the file, files are parsed/included in a
|
||||
different order, etc.)
|
||||
- The amount is separated into \"commodity\" (the symbol) and
|
||||
\"amount\" (numeric quantity) fields.
|
||||
- The numeric amount is repeated in either the \"credit\" or \"debit\"
|
||||
column, for convenience. (Those names are not accurate in the
|
||||
accounting sense; it just puts negative amounts under credit and
|
||||
zero or greater amounts under debit.)
|
||||
@ -13,7 +13,7 @@ import Hledger.Cli.CliOptions
|
||||
import Hledger.Cli.Commands.Print
|
||||
|
||||
printuniquemode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Printunique.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Printunique.txt"))
|
||||
[]
|
||||
[generalflagsgroup1]
|
||||
[]
|
||||
|
||||
18
hledger/Hledger/Cli/Commands/Printunique.txt
Normal file
18
hledger/Hledger/Cli/Commands/Printunique.txt
Normal file
@ -0,0 +1,18 @@
|
||||
print-unique\
|
||||
Print transactions which do not reuse an already-seen description.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
Example:
|
||||
|
||||
``` {.shell}
|
||||
$ cat unique.journal
|
||||
1/1 test
|
||||
(acct:one) 1
|
||||
2/2 test
|
||||
(acct:two) 2
|
||||
$ LEDGER_FILE=unique.journal hledger print-unique
|
||||
(-f option not supported)
|
||||
2015/01/01 test
|
||||
(acct:one) 1
|
||||
```
|
||||
@ -28,7 +28,7 @@ import Hledger.Cli.CliOptions
|
||||
import Hledger.Cli.Utils
|
||||
|
||||
registermode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Register.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Register.txt"))
|
||||
[flagNone ["cumulative"] (\opts -> setboolopt "change" opts)
|
||||
"show running total from report start date (default)"
|
||||
,flagNone ["historical","H"] (\opts -> setboolopt "historical" opts)
|
||||
|
||||
113
hledger/Hledger/Cli/Commands/Register.txt
Normal file
113
hledger/Hledger/Cli/Commands/Register.txt
Normal file
@ -0,0 +1,113 @@
|
||||
register, reg, r\
|
||||
Show postings and their running total.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
The register command displays postings in date order, one per line, and
|
||||
their running total. This is typically used with a [query](#queries)
|
||||
selecting a particular account, to see that account\'s activity:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger register checking
|
||||
2008/01/01 income assets:bank:checking $1 $1
|
||||
2008/06/01 gift assets:bank:checking $1 $2
|
||||
2008/06/02 save assets:bank:checking $-1 $1
|
||||
2008/12/31 pay off assets:bank:checking $-1 0
|
||||
```
|
||||
|
||||
With \--date2, it shows and sorts by secondary date instead.
|
||||
|
||||
The `--historical`/`-H` flag adds the balance from any undisplayed prior
|
||||
postings to the running total. This is useful when you want to see only
|
||||
recent activity, with a historically accurate running balance:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger register checking -b 2008/6 --historical
|
||||
2008/06/01 gift assets:bank:checking $1 $2
|
||||
2008/06/02 save assets:bank:checking $-1 $1
|
||||
2008/12/31 pay off assets:bank:checking $-1 0
|
||||
```
|
||||
|
||||
The `--depth` option limits the amount of sub-account detail displayed.
|
||||
|
||||
The `--average`/`-A` flag shows the running average posting amount
|
||||
instead of the running total (so, the final number displayed is the
|
||||
average for the whole report period). This flag implies `--empty` (see
|
||||
below). It is affected by `--historical`. It works best when showing
|
||||
just one account and one commodity.
|
||||
|
||||
The `--related`/`-r` flag shows the *other* postings in the transactions
|
||||
of the postings which would normally be shown.
|
||||
|
||||
With a [reporting interval](#reporting-interval), register shows summary
|
||||
postings, one per interval, aggregating the postings to each account:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger register --monthly income
|
||||
2008/01 income:salary $-1 $-1
|
||||
2008/06 income:gifts $-1 $-2
|
||||
```
|
||||
|
||||
Periods with no activity, and summary postings with a zero amount, are
|
||||
not shown by default; use the `--empty`/`-E` flag to see them:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger register --monthly income -E
|
||||
2008/01 income:salary $-1 $-1
|
||||
2008/02 0 $-1
|
||||
2008/03 0 $-1
|
||||
2008/04 0 $-1
|
||||
2008/05 0 $-1
|
||||
2008/06 income:gifts $-1 $-2
|
||||
2008/07 0 $-2
|
||||
2008/08 0 $-2
|
||||
2008/09 0 $-2
|
||||
2008/10 0 $-2
|
||||
2008/11 0 $-2
|
||||
2008/12 0 $-2
|
||||
```
|
||||
|
||||
Often, you\'ll want to see just one line per interval. The `--depth`
|
||||
option helps with this, causing subaccounts to be aggregated:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger register --monthly assets --depth 1h
|
||||
2008/01 assets $1 $1
|
||||
2008/06 assets $-1 0
|
||||
2008/12 assets $-1 $-1
|
||||
```
|
||||
|
||||
Note when using report intervals, if you specify start/end dates these
|
||||
will be adjusted outward if necessary to contain a whole number of
|
||||
intervals. This ensures that the first and last intervals are full
|
||||
length and comparable to the others in the report.
|
||||
|
||||
### Custom register output
|
||||
|
||||
register uses the full terminal width by default, except on windows. You
|
||||
can override this by setting the `COLUMNS` environment variable (not a
|
||||
bash shell variable) or by using the `--width`/`-w` option.
|
||||
|
||||
The description and account columns normally share the space equally
|
||||
(about half of (width - 40) each). You can adjust this by adding a
|
||||
description width as part of \--width\'s argument, comma-separated:
|
||||
`--width W,D` . Here\'s a diagram:
|
||||
|
||||
<--------------------------------- width (W) ---------------------------------->
|
||||
date (10) description (D) account (W-41-D) amount (12) balance (12)
|
||||
DDDDDDDDDD dddddddddddddddddddd aaaaaaaaaaaaaaaaaaa AAAAAAAAAAAA AAAAAAAAAAAA
|
||||
|
||||
and some examples:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger reg # use terminal width (or 80 on windows)
|
||||
$ hledger reg -w 100 # use width 100
|
||||
$ COLUMNS=100 hledger reg # set with one-time environment variable
|
||||
$ export COLUMNS=100; hledger reg # set till session end (or window resize)
|
||||
$ hledger reg -w 100,40 # set overall width 100, description width 40
|
||||
$ hledger reg -w $COLUMNS,40 # use terminal width, and set description width
|
||||
```
|
||||
|
||||
This command also supports [output
|
||||
destination](/manual.html#output-destination) and [output
|
||||
format](/manual.html#output-format) selection.
|
||||
@ -15,7 +15,7 @@ import Hledger.Cli.CliOptions
|
||||
import Hledger.Cli.Commands.Register
|
||||
|
||||
registermatchmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Registermatch.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Registermatch.txt"))
|
||||
[]
|
||||
[generalflagsgroup1]
|
||||
[]
|
||||
|
||||
8
hledger/Hledger/Cli/Commands/Registermatch.txt
Normal file
8
hledger/Hledger/Cli/Commands/Registermatch.txt
Normal file
@ -0,0 +1,8 @@
|
||||
register-match\
|
||||
Print the one posting whose transaction description is closest to DESC,
|
||||
in the style of the register command. If there are multiple equally good
|
||||
matches, it shows the most recent. Query options (options, not
|
||||
arguments) can be used to restrict the search space. Helps
|
||||
ledger-autosync detect already-seen transactions when importing.
|
||||
|
||||
*FLAGS*
|
||||
@ -23,7 +23,7 @@ import Text.Megaparsec
|
||||
import qualified Data.Algorithm.Diff as D
|
||||
|
||||
rewritemode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Rewrite.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Rewrite.txt"))
|
||||
[flagReq ["add-posting"] (\s opts -> Right $ setopt "add-posting" s opts) "'ACCT AMTEXPR'"
|
||||
"add a posting to ACCT, which may be parenthesised. AMTEXPR is either a literal amount, or *N which means the transaction's first matched amount multiplied by N (a decimal number). Two spaces separate ACCT and AMTEXPR."
|
||||
,flagNone ["diff"] (setboolopt "diff") "generate diff suitable as an input for patch tool"
|
||||
|
||||
144
hledger/Hledger/Cli/Commands/Rewrite.txt
Normal file
144
hledger/Hledger/Cli/Commands/Rewrite.txt
Normal file
@ -0,0 +1,144 @@
|
||||
rewrite\
|
||||
Print all transactions, rewriting the postings of matched transactions.
|
||||
For now the only rewrite available is adding new postings, like print
|
||||
\--auto.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
This is a start at a generic rewriter of transaction entries. It reads
|
||||
the default journal and prints the transactions, like print, but adds
|
||||
one or more specified postings to any transactions matching QUERY. The
|
||||
posting amounts can be fixed, or a multiplier of the existing
|
||||
transaction\'s first posting amount.
|
||||
|
||||
Examples:
|
||||
|
||||
hledger-rewrite.hs ^income --add-posting '(liabilities:tax) *.33 ; income tax' --add-posting '(reserve:gifts) $100'
|
||||
hledger-rewrite.hs expenses:gifts --add-posting '(reserve:gifts) *-1"'
|
||||
hledger-rewrite.hs -f rewrites.hledger
|
||||
|
||||
rewrites.hledger may consist of entries like:
|
||||
|
||||
= ^income amt:<0 date:2017
|
||||
(liabilities:tax) *0.33 ; tax on income
|
||||
(reserve:grocery) *0.25 ; reserve 25% for grocery
|
||||
(reserve:) *0.25 ; reserve 25% for grocery
|
||||
|
||||
Note the single quotes to protect the dollar sign from bash, and the two
|
||||
spaces between account and amount.
|
||||
|
||||
More:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger rewrite -- [QUERY] --add-posting "ACCT AMTEXPR" ...
|
||||
$ hledger rewrite -- ^income --add-posting '(liabilities:tax) *.33'
|
||||
$ hledger rewrite -- expenses:gifts --add-posting '(budget:gifts) *-1"'
|
||||
$ hledger rewrite -- ^income --add-posting '(budget:foreign currency) *0.25 JPY; diversify'
|
||||
```
|
||||
|
||||
Argument for `--add-posting` option is a usual posting of transaction
|
||||
with an exception for amount specification. More precisely, you can use
|
||||
`'*'` (star symbol) before the amount to indicate that that this is a
|
||||
factor for an amount of original matched posting. If the amount includes
|
||||
a commodity name, the new posting amount will be in the new commodity;
|
||||
otherwise, it will be in the matched posting amount\'s commodity.
|
||||
|
||||
#### Re-write rules in a file
|
||||
|
||||
During the run this tool will execute so called [\"Automated
|
||||
Transactions\"](http://ledger-cli.org/3.0/doc/ledger3.html#Automated-Transactions)
|
||||
found in any journal it process. I.e instead of specifying this
|
||||
operations in command line you can put them in a journal file.
|
||||
|
||||
``` {.shell}
|
||||
$ rewrite-rules.journal
|
||||
```
|
||||
|
||||
Make contents look like this:
|
||||
|
||||
``` {.journal}
|
||||
= ^income
|
||||
(liabilities:tax) *.33
|
||||
|
||||
= expenses:gifts
|
||||
budget:gifts *-1
|
||||
assets:budget *1
|
||||
```
|
||||
|
||||
Note that `'='` (equality symbol) that is used instead of date in
|
||||
transactions you usually write. It indicates the query by which you want
|
||||
to match the posting to add new ones.
|
||||
|
||||
``` {.shell}
|
||||
$ hledger rewrite -- -f input.journal -f rewrite-rules.journal > rewritten-tidy-output.journal
|
||||
```
|
||||
|
||||
This is something similar to the commands pipeline:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger rewrite -- -f input.journal '^income' --add-posting '(liabilities:tax) *.33' \
|
||||
| hledger rewrite -- -f - expenses:gifts --add-posting 'budget:gifts *-1' \
|
||||
--add-posting 'assets:budget *1' \
|
||||
> rewritten-tidy-output.journal
|
||||
```
|
||||
|
||||
It is important to understand that relative order of such entries in
|
||||
journal is important. You can re-use result of previously added
|
||||
postings.
|
||||
|
||||
#### Diff output format
|
||||
|
||||
To use this tool for batch modification of your journal files you may
|
||||
find useful output in form of unified diff.
|
||||
|
||||
``` {.shell}
|
||||
$ hledger rewrite -- --diff -f examples/sample.journal '^income' --add-posting '(liabilities:tax) *.33'
|
||||
```
|
||||
|
||||
Output might look like:
|
||||
|
||||
``` {.diff}
|
||||
--- /tmp/examples/sample.journal
|
||||
+++ /tmp/examples/sample.journal
|
||||
@@ -18,3 +18,4 @@
|
||||
2008/01/01 income
|
||||
- assets:bank:checking $1
|
||||
+ assets:bank:checking $1
|
||||
income:salary
|
||||
+ (liabilities:tax) 0
|
||||
@@ -22,3 +23,4 @@
|
||||
2008/06/01 gift
|
||||
- assets:bank:checking $1
|
||||
+ assets:bank:checking $1
|
||||
income:gifts
|
||||
+ (liabilities:tax) 0
|
||||
```
|
||||
|
||||
If you\'ll pass this through `patch` tool you\'ll get transactions
|
||||
containing the posting that matches your query be updated. Note that
|
||||
multiple files might be update according to list of input files
|
||||
specified via `--file` options and `include` directives inside of these
|
||||
files.
|
||||
|
||||
Be careful. Whole transaction being re-formatted in a style of output
|
||||
from `hledger print`.
|
||||
|
||||
See also:
|
||||
|
||||
https://github.com/simonmichael/hledger/issues/99
|
||||
|
||||
#### rewrite vs. print \--auto
|
||||
|
||||
This command predates print \--auto, and currently does much the same
|
||||
thing, but with these differences:
|
||||
|
||||
- with multiple files, rewrite lets rules in any file affect all other
|
||||
files. print \--auto uses standard directive scoping; rules affect
|
||||
only child files.
|
||||
|
||||
- rewrite\'s query limits which transactions can be rewritten; all are
|
||||
printed. print \--auto\'s query limits which transactions are
|
||||
printed.
|
||||
|
||||
- rewrite applies rules specified on command line or in the journal.
|
||||
print \--auto applies rules specified in the journal.
|
||||
@ -30,7 +30,7 @@ import Hledger.Cli.CliOptions
|
||||
|
||||
|
||||
roimode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Roi.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Roi.txt"))
|
||||
[flagNone ["cashflow"] (setboolopt "cashflow") "show all amounts that were used to compute returns"
|
||||
,flagReq ["investment"] (\s opts -> Right $ setopt "investment" s opts) "QUERY"
|
||||
"query to select your investment transactions"
|
||||
|
||||
23
hledger/Hledger/Cli/Commands/Roi.txt
Normal file
23
hledger/Hledger/Cli/Commands/Roi.txt
Normal file
@ -0,0 +1,23 @@
|
||||
roi\
|
||||
Shows the time-weighted (TWR) and money-weighted (IRR) rate of return on
|
||||
your investments.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
This command assumes that you have account(s) that hold nothing but your
|
||||
investments and whenever you record current appraisal/valuation of these
|
||||
investments you offset unrealized profit and loss into account(s) that,
|
||||
again, hold nothing but unrealized profit and loss.
|
||||
|
||||
Any transactions affecting balance of investment account(s) and not
|
||||
originating from unrealized profit and loss account(s) are assumed to be
|
||||
your investments or withdrawals.
|
||||
|
||||
At a minimum, you need to supply a query (which could be just an account
|
||||
name) to select your investments with `--inv`, and another query to
|
||||
identify your profit and loss transactions with `--pnl`.
|
||||
|
||||
It will compute and display the internalized rate of return (IRR) and
|
||||
time-weighted rate of return (TWR) for your investments for the time
|
||||
period requested. Both rates of return are annualized before display,
|
||||
regardless of the length of reporting interval.
|
||||
@ -31,7 +31,7 @@ import Hledger.Cli.Utils (writeOutput)
|
||||
|
||||
|
||||
statsmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Stats.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Stats.txt"))
|
||||
[flagReq ["output-file","o"] (\s opts -> Right $ setopt "output-file" s opts) "FILE" "write output to FILE. A file extension matching one of the above formats selects that format."
|
||||
]
|
||||
[generalflagsgroup1]
|
||||
|
||||
28
hledger/Hledger/Cli/Commands/Stats.txt
Normal file
28
hledger/Hledger/Cli/Commands/Stats.txt
Normal file
@ -0,0 +1,28 @@
|
||||
stats\
|
||||
Show some journal statistics.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
The stats command displays summary information for the whole journal, or
|
||||
a matched part of it. With a [reporting interval](#reporting-interval),
|
||||
it shows a report for each report period.
|
||||
|
||||
Example:
|
||||
|
||||
``` {.shell}
|
||||
$ hledger stats
|
||||
Main journal file : /src/hledger/examples/sample.journal
|
||||
Included journal files :
|
||||
Transactions span : 2008-01-01 to 2009-01-01 (366 days)
|
||||
Last transaction : 2008-12-31 (2333 days ago)
|
||||
Transactions : 5 (0.0 per day)
|
||||
Transactions last 30 days: 0 (0.0 per day)
|
||||
Transactions last 7 days : 0 (0.0 per day)
|
||||
Payees/descriptions : 5
|
||||
Accounts : 8 (depth 3)
|
||||
Commodities : 1 ($)
|
||||
```
|
||||
|
||||
This command also supports [output
|
||||
destination](/manual.html#output-destination) and [output
|
||||
format](/manual.html#output-format) selection.
|
||||
@ -14,7 +14,7 @@ import Hledger
|
||||
import Hledger.Cli.CliOptions
|
||||
|
||||
tagsmode = hledgerCommandMode
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Tags.md"))
|
||||
($(hereFileRelative "Hledger/Cli/Commands/Tags.txt"))
|
||||
[] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --
|
||||
[generalflagsgroup1]
|
||||
[]
|
||||
|
||||
7
hledger/Hledger/Cli/Commands/Tags.txt
Normal file
7
hledger/Hledger/Cli/Commands/Tags.txt
Normal file
@ -0,0 +1,7 @@
|
||||
tags\
|
||||
List all the tag names used in the journal. With a TAGREGEX argument,
|
||||
only tag names matching the regular expression (case insensitive) are
|
||||
shown. With QUERY arguments, only transactions matching the query are
|
||||
considered.
|
||||
|
||||
*FLAGS*
|
||||
21
hledger/Hledger/Cli/Commands/Test.txt
Normal file
21
hledger/Hledger/Cli/Commands/Test.txt
Normal file
@ -0,0 +1,21 @@
|
||||
test\
|
||||
Run built-in unit tests.
|
||||
|
||||
*FLAGS*
|
||||
|
||||
This command runs the unit tests built in to hledger-lib and hledger,
|
||||
printing test names and results on stdout. If any test fails, the exit
|
||||
code will be non-zero.
|
||||
|
||||
Test names include a group prefix. If a (exact, case sensitive) group
|
||||
prefix, or a full test name is provided as the first argument, only that
|
||||
group or test is run.
|
||||
|
||||
If a numeric second argument is provided, it will set the randomness
|
||||
seed, for repeatable results from tests using randomness (currently none
|
||||
of them).
|
||||
|
||||
This is mainly used by developers, but it\'s nice to be able to
|
||||
sanity-check your installed hledger executable at any time. All tests
|
||||
are expected to pass - if you ever see otherwise, something has gone
|
||||
wrong, please report a bug!
|
||||
@ -4,7 +4,7 @@ cabal-version: 1.12
|
||||
--
|
||||
-- see: https://github.com/sol/hpack
|
||||
--
|
||||
-- hash: f7e09ce5d14e5c6c98b49831e7542ad9c40c969033841ca17e144a06bcda89cb
|
||||
-- hash: 14d0eb516133f56c0d466c15ab014ce4e7d3b63a641b1ad70de250a2930e8784
|
||||
|
||||
name: hledger
|
||||
version: 1.12.99
|
||||
@ -61,6 +61,30 @@ extra-source-files:
|
||||
embeddedfiles/hledger_timedot.5
|
||||
embeddedfiles/hledger_timedot.txt
|
||||
embeddedfiles/hledger_timedot.info
|
||||
Hledger/Cli/Commands/Accounts.txt
|
||||
Hledger/Cli/Commands/Activity.txt
|
||||
Hledger/Cli/Commands/Add.txt
|
||||
Hledger/Cli/Commands/Balance.txt
|
||||
Hledger/Cli/Commands/Balancesheet.txt
|
||||
Hledger/Cli/Commands/Balancesheetequity.txt
|
||||
Hledger/Cli/Commands/Cashflow.txt
|
||||
Hledger/Cli/Commands/Checkdates.txt
|
||||
Hledger/Cli/Commands/Checkdupes.txt
|
||||
Hledger/Cli/Commands/Close.txt
|
||||
Hledger/Cli/Commands/Files.txt
|
||||
Hledger/Cli/Commands/Help.txt
|
||||
Hledger/Cli/Commands/Import.txt
|
||||
Hledger/Cli/Commands/Incomestatement.txt
|
||||
Hledger/Cli/Commands/Prices.txt
|
||||
Hledger/Cli/Commands/Print.txt
|
||||
Hledger/Cli/Commands/Printunique.txt
|
||||
Hledger/Cli/Commands/Register.txt
|
||||
Hledger/Cli/Commands/Registermatch.txt
|
||||
Hledger/Cli/Commands/Rewrite.txt
|
||||
Hledger/Cli/Commands/Roi.txt
|
||||
Hledger/Cli/Commands/Stats.txt
|
||||
Hledger/Cli/Commands/Tags.txt
|
||||
Hledger/Cli/Commands/Test.txt
|
||||
|
||||
source-repository head
|
||||
type: git
|
||||
|
||||
@ -46,11 +46,11 @@ _include_({{Hledger/Cli/Commands/Cashflow.md}})
|
||||
|
||||
## check-dates
|
||||
|
||||
_include_({{Hledger/Cli/Commands/check-Dates.md}})
|
||||
_include_({{Hledger/Cli/Commands/Checkdates.md}})
|
||||
|
||||
## check-dupes
|
||||
|
||||
_include_({{Hledger/Cli/Commands/check-Dupes.md}})
|
||||
_include_({{Hledger/Cli/Commands/Checkdupes.md}})
|
||||
|
||||
## close
|
||||
|
||||
@ -82,7 +82,7 @@ _include_({{Hledger/Cli/Commands/Print.md}})
|
||||
|
||||
## print-unique
|
||||
|
||||
_include_({{Hledger/Cli/Commands/print-Unique.md}})
|
||||
_include_({{Hledger/Cli/Commands/Printunique.md}})
|
||||
|
||||
## register
|
||||
|
||||
@ -90,7 +90,7 @@ _include_({{Hledger/Cli/Commands/Register.md}})
|
||||
|
||||
## register-match
|
||||
|
||||
_include_({{Hledger/Cli/Commands/register-Match.md}})
|
||||
_include_({{Hledger/Cli/Commands/Registermatch.md}})
|
||||
|
||||
## rewrite
|
||||
|
||||
|
||||
@ -54,6 +54,31 @@ extra-source-files:
|
||||
- embeddedfiles/hledger_timedot.5
|
||||
- embeddedfiles/hledger_timedot.txt
|
||||
- embeddedfiles/hledger_timedot.info
|
||||
- Hledger/Cli/Commands/Accounts.txt
|
||||
- Hledger/Cli/Commands/Activity.txt
|
||||
- Hledger/Cli/Commands/Add.txt
|
||||
- Hledger/Cli/Commands/Balance.txt
|
||||
- Hledger/Cli/Commands/Balancesheet.txt
|
||||
- Hledger/Cli/Commands/Balancesheetequity.txt
|
||||
- Hledger/Cli/Commands/Cashflow.txt
|
||||
- Hledger/Cli/Commands/Checkdates.txt
|
||||
- Hledger/Cli/Commands/Checkdupes.txt
|
||||
- Hledger/Cli/Commands/Close.txt
|
||||
- Hledger/Cli/Commands/Files.txt
|
||||
- Hledger/Cli/Commands/Help.txt
|
||||
- Hledger/Cli/Commands/Import.txt
|
||||
- Hledger/Cli/Commands/Incomestatement.txt
|
||||
- Hledger/Cli/Commands/Prices.txt
|
||||
- Hledger/Cli/Commands/Print.txt
|
||||
- Hledger/Cli/Commands/Printunique.txt
|
||||
- Hledger/Cli/Commands/Register.txt
|
||||
- Hledger/Cli/Commands/Registermatch.txt
|
||||
- Hledger/Cli/Commands/Rewrite.txt
|
||||
- Hledger/Cli/Commands/Roi.txt
|
||||
- Hledger/Cli/Commands/Stats.txt
|
||||
- Hledger/Cli/Commands/Tags.txt
|
||||
- Hledger/Cli/Commands/Test.txt
|
||||
|
||||
|
||||
#data-files:
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user