diff --git a/hledger/Hledger/Cli/Commands.hs b/hledger/Hledger/Cli/Commands.hs index 0e927ba02..315382cf9 100644 --- a/hledger/Hledger/Cli/Commands.hs +++ b/hledger/Hledger/Cli/Commands.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Accounts.hs b/hledger/Hledger/Cli/Commands/Accounts.hs index d497bff15..4a1cb31a3 100644 --- a/hledger/Hledger/Cli/Commands/Accounts.hs +++ b/hledger/Hledger/Cli/Commands/Accounts.hs @@ -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" diff --git a/hledger/Hledger/Cli/Commands/Accounts.txt b/hledger/Hledger/Cli/Commands/Accounts.txt new file mode 100644 index 000000000..36bc0fa7e --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Accounts.txt @@ -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 +``` diff --git a/hledger/Hledger/Cli/Commands/Activity.hs b/hledger/Hledger/Cli/Commands/Activity.hs index 105f57a51..d3d0311ff 100644 --- a/hledger/Hledger/Cli/Commands/Activity.hs +++ b/hledger/Hledger/Cli/Commands/Activity.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Activity.txt b/hledger/Hledger/Cli/Commands/Activity.txt new file mode 100644 index 000000000..5e2a83816 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Activity.txt @@ -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 ** +``` diff --git a/hledger/Hledger/Cli/Commands/Add.hs b/hledger/Hledger/Cli/Commands/Add.hs index 5ed0ae1c9..93fa822c6 100644 --- a/hledger/Hledger/Cli/Commands/Add.hs +++ b/hledger/Hledger/Cli/Commands/Add.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Add.txt b/hledger/Hledger/Cli/Commands/Add.txt new file mode 100644 index 000000000..29d764240 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Add.txt @@ -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]: $ +``` diff --git a/hledger/Hledger/Cli/Commands/Balance.hs b/hledger/Hledger/Cli/Commands/Balance.hs index 0e5fbf7c7..406e07866 100644 --- a/hledger/Hledger/Cli/Commands/Balance.hs +++ b/hledger/Hledger/Cli/Commands/Balance.hs @@ -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) diff --git a/hledger/Hledger/Cli/Commands/Balance.txt b/hledger/Hledger/Cli/Commands/Balance.txt new file mode 100644 index 000000000..288b22a4c --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Balance.txt @@ -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. 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. + + +### 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: + + ``` {.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. diff --git a/hledger/Hledger/Cli/Commands/Balancesheet.hs b/hledger/Hledger/Cli/Commands/Balancesheet.hs index a000a6b83..1770ed026 100644 --- a/hledger/Hledger/Cli/Commands/Balancesheet.hs +++ b/hledger/Hledger/Cli/Commands/Balancesheet.hs @@ -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{ diff --git a/hledger/Hledger/Cli/Commands/Balancesheet.txt b/hledger/Hledger/Cli/Commands/Balancesheet.txt new file mode 100644 index 000000000..abdb1bcdc --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Balancesheet.txt @@ -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. diff --git a/hledger/Hledger/Cli/Commands/Balancesheetequity.hs b/hledger/Hledger/Cli/Commands/Balancesheetequity.hs index d33542a65..603c43137 100644 --- a/hledger/Hledger/Cli/Commands/Balancesheetequity.hs +++ b/hledger/Hledger/Cli/Commands/Balancesheetequity.hs @@ -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{ diff --git a/hledger/Hledger/Cli/Commands/Balancesheetequity.txt b/hledger/Hledger/Cli/Commands/Balancesheetequity.txt new file mode 100644 index 000000000..dec5611f2 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Balancesheetequity.txt @@ -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 +``` diff --git a/hledger/Hledger/Cli/Commands/Cashflow.hs b/hledger/Hledger/Cli/Commands/Cashflow.hs index 6bc34aa9d..b45f58977 100644 --- a/hledger/Hledger/Cli/Commands/Cashflow.hs +++ b/hledger/Hledger/Cli/Commands/Cashflow.hs @@ -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{ diff --git a/hledger/Hledger/Cli/Commands/Cashflow.txt b/hledger/Hledger/Cli/Commands/Cashflow.txt new file mode 100644 index 000000000..8b7c0419a --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Cashflow.txt @@ -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. diff --git a/hledger/Hledger/Cli/Commands/Checkdates.hs b/hledger/Hledger/Cli/Commands/Checkdates.hs index f380559f7..ab313bbf7 100755 --- a/hledger/Hledger/Cli/Commands/Checkdates.hs +++ b/hledger/Hledger/Cli/Commands/Checkdates.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Checkdates.txt b/hledger/Hledger/Cli/Commands/Checkdates.txt new file mode 100644 index 000000000..d0f4da002 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Checkdates.txt @@ -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* diff --git a/hledger/Hledger/Cli/Commands/Checkdupes.hs b/hledger/Hledger/Cli/Commands/Checkdupes.hs index abecf905e..5c03a0cbf 100755 --- a/hledger/Hledger/Cli/Commands/Checkdupes.hs +++ b/hledger/Hledger/Cli/Commands/Checkdupes.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Checkdupes.txt b/hledger/Hledger/Cli/Commands/Checkdupes.txt new file mode 100644 index 000000000..cd27b858e --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Checkdupes.txt @@ -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 diff --git a/hledger/Hledger/Cli/Commands/Close.hs b/hledger/Hledger/Cli/Commands/Close.hs index 7efa3482c..3b9ced6e4 100755 --- a/hledger/Hledger/Cli/Commands/Close.hs +++ b/hledger/Hledger/Cli/Commands/Close.hs @@ -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" ] diff --git a/hledger/Hledger/Cli/Commands/Close.txt b/hledger/Hledger/Cli/Commands/Close.txt new file mode 100644 index 000000000..4b25fded4 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Close.txt @@ -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 diff --git a/hledger/Hledger/Cli/Commands/Files.hs b/hledger/Hledger/Cli/Commands/Files.hs index c1770041c..0fcfdd228 100644 --- a/hledger/Hledger/Cli/Commands/Files.hs +++ b/hledger/Hledger/Cli/Commands/Files.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Files.txt b/hledger/Hledger/Cli/Commands/Files.txt new file mode 100644 index 000000000..2eb568446 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Files.txt @@ -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* diff --git a/hledger/Hledger/Cli/Commands/Help.hs b/hledger/Hledger/Cli/Commands/Help.hs index c5b2b2952..99a38adda 100644 --- a/hledger/Hledger/Cli/Commands/Help.hs +++ b/hledger/Hledger/Cli/Commands/Help.hs @@ -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" diff --git a/hledger/Hledger/Cli/Commands/Help.txt b/hledger/Hledger/Cli/Commands/Help.txt new file mode 100644 index 000000000..d199e33b5 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Help.txt @@ -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 +... +``` diff --git a/hledger/Hledger/Cli/Commands/Import.hs b/hledger/Hledger/Cli/Commands/Import.hs index 78c5e6e4b..b589c2614 100755 --- a/hledger/Hledger/Cli/Commands/Import.hs +++ b/hledger/Hledger/Cli/Commands/Import.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Import.txt b/hledger/Hledger/Cli/Commands/Import.txt new file mode 100644 index 000000000..612f4d27e --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Import.txt @@ -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 +``` diff --git a/hledger/Hledger/Cli/Commands/Incomestatement.hs b/hledger/Hledger/Cli/Commands/Incomestatement.hs index 566b35cca..8819a0985 100644 --- a/hledger/Hledger/Cli/Commands/Incomestatement.hs +++ b/hledger/Hledger/Cli/Commands/Incomestatement.hs @@ -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{ diff --git a/hledger/Hledger/Cli/Commands/Incomestatement.txt b/hledger/Hledger/Cli/Commands/Incomestatement.txt new file mode 100644 index 000000000..034b0b070 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Incomestatement.txt @@ -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. diff --git a/hledger/Hledger/Cli/Commands/Prices.hs b/hledger/Hledger/Cli/Commands/Prices.hs index 627d9c363..a492a7630 100755 --- a/hledger/Hledger/Cli/Commands/Prices.hs +++ b/hledger/Hledger/Cli/Commands/Prices.hs @@ -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] diff --git a/hledger/Hledger/Cli/Commands/Prices.txt b/hledger/Hledger/Cli/Commands/Prices.txt new file mode 100644 index 000000000..e468b5e01 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Prices.txt @@ -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* diff --git a/hledger/Hledger/Cli/Commands/Print.hs b/hledger/Hledger/Cli/Commands/Print.hs index 710db4783..04a817ca5 100644 --- a/hledger/Hledger/Cli/Commands/Print.hs +++ b/hledger/Hledger/Cli/Commands/Print.hs @@ -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") diff --git a/hledger/Hledger/Cli/Commands/Print.txt b/hledger/Hledger/Cli/Commands/Print.txt new file mode 100644 index 000000000..2d1516a0b --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Print.txt @@ -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.) diff --git a/hledger/Hledger/Cli/Commands/Printunique.hs b/hledger/Hledger/Cli/Commands/Printunique.hs index 668e5a86a..e139c88c3 100755 --- a/hledger/Hledger/Cli/Commands/Printunique.hs +++ b/hledger/Hledger/Cli/Commands/Printunique.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Printunique.txt b/hledger/Hledger/Cli/Commands/Printunique.txt new file mode 100644 index 000000000..1915a0764 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Printunique.txt @@ -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 +``` diff --git a/hledger/Hledger/Cli/Commands/Register.hs b/hledger/Hledger/Cli/Commands/Register.hs index 4ed36e349..d9593b4a2 100644 --- a/hledger/Hledger/Cli/Commands/Register.hs +++ b/hledger/Hledger/Cli/Commands/Register.hs @@ -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) diff --git a/hledger/Hledger/Cli/Commands/Register.txt b/hledger/Hledger/Cli/Commands/Register.txt new file mode 100644 index 000000000..7852f46cf --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Register.txt @@ -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. diff --git a/hledger/Hledger/Cli/Commands/Registermatch.hs b/hledger/Hledger/Cli/Commands/Registermatch.hs index fe93da49c..d2e5a535d 100755 --- a/hledger/Hledger/Cli/Commands/Registermatch.hs +++ b/hledger/Hledger/Cli/Commands/Registermatch.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Registermatch.txt b/hledger/Hledger/Cli/Commands/Registermatch.txt new file mode 100644 index 000000000..48474a448 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Registermatch.txt @@ -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* diff --git a/hledger/Hledger/Cli/Commands/Rewrite.hs b/hledger/Hledger/Cli/Commands/Rewrite.hs index 57a1b8487..dae85e894 100755 --- a/hledger/Hledger/Cli/Commands/Rewrite.hs +++ b/hledger/Hledger/Cli/Commands/Rewrite.hs @@ -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" diff --git a/hledger/Hledger/Cli/Commands/Rewrite.txt b/hledger/Hledger/Cli/Commands/Rewrite.txt new file mode 100644 index 000000000..3fdc159a9 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Rewrite.txt @@ -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. diff --git a/hledger/Hledger/Cli/Commands/Roi.hs b/hledger/Hledger/Cli/Commands/Roi.hs index 9ef5c28c7..84b4c18a2 100644 --- a/hledger/Hledger/Cli/Commands/Roi.hs +++ b/hledger/Hledger/Cli/Commands/Roi.hs @@ -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" diff --git a/hledger/Hledger/Cli/Commands/Roi.txt b/hledger/Hledger/Cli/Commands/Roi.txt new file mode 100644 index 000000000..0540541b3 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Roi.txt @@ -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. diff --git a/hledger/Hledger/Cli/Commands/Stats.hs b/hledger/Hledger/Cli/Commands/Stats.hs index 67dff52f3..a7f39f780 100644 --- a/hledger/Hledger/Cli/Commands/Stats.hs +++ b/hledger/Hledger/Cli/Commands/Stats.hs @@ -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] diff --git a/hledger/Hledger/Cli/Commands/Stats.txt b/hledger/Hledger/Cli/Commands/Stats.txt new file mode 100644 index 000000000..c017ef919 --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Stats.txt @@ -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. diff --git a/hledger/Hledger/Cli/Commands/Tags.hs b/hledger/Hledger/Cli/Commands/Tags.hs index 62c3df668..d0d94be71 100755 --- a/hledger/Hledger/Cli/Commands/Tags.hs +++ b/hledger/Hledger/Cli/Commands/Tags.hs @@ -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] [] diff --git a/hledger/Hledger/Cli/Commands/Tags.txt b/hledger/Hledger/Cli/Commands/Tags.txt new file mode 100644 index 000000000..4362c3d7e --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Tags.txt @@ -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* diff --git a/hledger/Hledger/Cli/Commands/Test.txt b/hledger/Hledger/Cli/Commands/Test.txt new file mode 100644 index 000000000..405d4371e --- /dev/null +++ b/hledger/Hledger/Cli/Commands/Test.txt @@ -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! diff --git a/hledger/hledger.cabal b/hledger/hledger.cabal index 32f1536b5..0efd9f044 100644 --- a/hledger/hledger.cabal +++ b/hledger/hledger.cabal @@ -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 diff --git a/hledger/hledger_commands.m4.md b/hledger/hledger_commands.m4.md index a26f74b44..6bed36a4a 100644 --- a/hledger/hledger_commands.m4.md +++ b/hledger/hledger_commands.m4.md @@ -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 diff --git a/hledger/package.yaml b/hledger/package.yaml index 6d00ee1b8..f5b23a961 100644 --- a/hledger/package.yaml +++ b/hledger/package.yaml @@ -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: