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. | -- The test command is defined here for easy access to other modules' tests. | ||||||
| 
 | 
 | ||||||
| testmode = hledgerCommandMode | testmode = hledgerCommandMode | ||||||
|   $(hereFileRelative "Hledger/Cli/Commands/Test.md") |   $(hereFileRelative "Hledger/Cli/Commands/Test.txt") | ||||||
|   [] |   [] | ||||||
|   [generalflagsgroup3] |   [generalflagsgroup3] | ||||||
|   [] |   [] | ||||||
|  | |||||||
| @ -35,7 +35,7 @@ import Hledger.Cli.CliOptions | |||||||
| 
 | 
 | ||||||
| -- | Command line options for this command. | -- | Command line options for this command. | ||||||
| accountsmode = hledgerCommandMode | 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 ["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 ["used"] (\opts -> setboolopt "used" opts) "show account names referenced by transactions" | ||||||
|   ,flagNone ["tree"] (\opts -> setboolopt "tree" opts) "show short account names, as a tree" |   ,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) | import Hledger.Utils.UTF8IOCompat (putStr) | ||||||
| 
 | 
 | ||||||
| activitymode = hledgerCommandMode | activitymode = hledgerCommandMode | ||||||
|   $(hereFileRelative "Hledger/Cli/Commands/Activity.md") |   $(hereFileRelative "Hledger/Cli/Commands/Activity.txt") | ||||||
|   [] |   [] | ||||||
|   [generalflagsgroup1] |   [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 | 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"] |   [flagNone ["no-new-accounts"]  (\opts -> setboolopt "no-new-accounts" opts) "don't allow creating new accounts"] | ||||||
|   [generalflagsgroup2] |   [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. | -- | Command line options for this command. | ||||||
| balancemode = hledgerCommandMode | balancemode = hledgerCommandMode | ||||||
|   $(hereFileRelative "Hledger/Cli/Commands/Balance.md") |   $(hereFileRelative "Hledger/Cli/Commands/Balance.txt") | ||||||
|   ([flagNone ["change"] (\opts -> setboolopt "change" opts) |   ([flagNone ["change"] (\opts -> setboolopt "change" opts) | ||||||
|       "show balance change in each period (default)" |       "show balance change in each period (default)" | ||||||
|    ,flagNone ["cumulative"] (\opts -> setboolopt "cumulative" opts) |    ,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 | import Hledger.Cli.CompoundBalanceCommand | ||||||
| 
 | 
 | ||||||
| balancesheetSpec = CompoundBalanceCommandSpec { | balancesheetSpec = CompoundBalanceCommandSpec { | ||||||
|   cbcdoc      = ($(hereFileRelative "Hledger/Cli/Commands/Balancesheet.md")), |   cbcdoc      = ($(hereFileRelative "Hledger/Cli/Commands/Balancesheet.txt")), | ||||||
|   cbctitle    = "Balance Sheet", |   cbctitle    = "Balance Sheet", | ||||||
|   cbcqueries  = [ |   cbcqueries  = [ | ||||||
|      CBCSubreportSpec{ |      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 | import Hledger.Cli.CompoundBalanceCommand | ||||||
| 
 | 
 | ||||||
| balancesheetequitySpec = CompoundBalanceCommandSpec { | balancesheetequitySpec = CompoundBalanceCommandSpec { | ||||||
|   cbcdoc      = ($(hereFileRelative "Hledger/Cli/Commands/Balancesheetequity.md")), |   cbcdoc      = ($(hereFileRelative "Hledger/Cli/Commands/Balancesheetequity.txt")), | ||||||
|   cbctitle    = "Balance Sheet With Equity", |   cbctitle    = "Balance Sheet With Equity", | ||||||
|   cbcqueries  = [ |   cbcqueries  = [ | ||||||
|      CBCSubreportSpec{ |      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 | import Hledger.Cli.CompoundBalanceCommand | ||||||
| 
 | 
 | ||||||
| cashflowSpec = CompoundBalanceCommandSpec { | cashflowSpec = CompoundBalanceCommandSpec { | ||||||
|   cbcdoc      = ($(hereFileRelative "Hledger/Cli/Commands/Cashflow.md")), |   cbcdoc      = ($(hereFileRelative "Hledger/Cli/Commands/Cashflow.txt")), | ||||||
|   cbctitle    = "Cashflow Statement", |   cbctitle    = "Cashflow Statement", | ||||||
|   cbcqueries  = [ |   cbcqueries  = [ | ||||||
|      CBCSubreportSpec{ |      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 :: Mode RawOpts | ||||||
| checkdatesmode = hledgerCommandMode | checkdatesmode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Checkdates.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Checkdates.txt")) | ||||||
|   [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] |   [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] | ||||||
|   [generalflagsgroup1] |   [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 :: Mode RawOpts | ||||||
| checkdupesmode = hledgerCommandMode | checkdupesmode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Checkdupes.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Checkdupes.txt")) | ||||||
|   [] |   [] | ||||||
|   [generalflagsgroup1] |   [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 | import Hledger.Cli.CliOptions | ||||||
| 
 | 
 | ||||||
| closemode = hledgerCommandMode | 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 ["opening"] (\opts -> setboolopt "opening" opts) "show just opening transaction" | ||||||
|   ,flagNone ["closing"] (\opts -> setboolopt "closing" opts) "show just closing 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. | -- | Command line options for this command. | ||||||
| filesmode = hledgerCommandMode | filesmode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Files.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Files.txt")) | ||||||
|   [] |   [] | ||||||
|   [generalflagsgroup2] |   [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 | --import Hledger.Utils.Debug | ||||||
| 
 | 
 | ||||||
| helpmode = hledgerCommandMode | helpmode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Help.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Help.txt")) | ||||||
|   [flagNone ["info"]  (setboolopt "info")  "show the manual with info" |   [flagNone ["info"]  (setboolopt "info")  "show the manual with info" | ||||||
|   ,flagNone ["man"]   (setboolopt "man")   "show the manual with man" |   ,flagNone ["man"]   (setboolopt "man")   "show the manual with man" | ||||||
|   ,flagNone ["pager"] (setboolopt "pager") "show the manual with $PAGER or less" |   ,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 | import Text.Printf | ||||||
| 
 | 
 | ||||||
| importmode = hledgerCommandMode | 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"]  |   [flagNone ["dry-run"] (\opts -> setboolopt "dry-run" opts) "just show the transactions to be imported"]  | ||||||
|   [generalflagsgroup1] |   [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 | import Hledger.Cli.CompoundBalanceCommand | ||||||
| 
 | 
 | ||||||
| incomestatementSpec = CompoundBalanceCommandSpec { | incomestatementSpec = CompoundBalanceCommandSpec { | ||||||
|   cbcdoc      = ($(hereFileRelative "Hledger/Cli/Commands/Incomestatement.md")), |   cbcdoc      = ($(hereFileRelative "Hledger/Cli/Commands/Incomestatement.txt")), | ||||||
|   cbctitle    = "Income Statement", |   cbctitle    = "Income Statement", | ||||||
|   cbcqueries  = [ |   cbcqueries  = [ | ||||||
|      CBCSubreportSpec{ |      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 | import System.Console.CmdArgs.Explicit | ||||||
| 
 | 
 | ||||||
| pricesmode = hledgerCommandMode | pricesmode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Prices.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Prices.txt")) | ||||||
|   [flagNone ["costs"] (setboolopt "costs") "print transaction prices from postings" |   [flagNone ["costs"] (setboolopt "costs") "print transaction prices from postings" | ||||||
|   ,flagNone ["inverted-costs"] (setboolopt "inverted-costs") "print transaction inverted prices from postings also"] |   ,flagNone ["inverted-costs"] (setboolopt "inverted-costs") "print transaction inverted prices from postings also"] | ||||||
|   [generalflagsgroup1] |   [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 | printmode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Print.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Print.txt")) | ||||||
|   [let arg = "STR" in |   [let arg = "STR" in | ||||||
|    flagReq  ["match","m"] (\s opts -> Right $ setopt "match" s opts) arg |    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") |     ("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 | import Hledger.Cli.Commands.Print | ||||||
| 
 | 
 | ||||||
| printuniquemode = hledgerCommandMode | printuniquemode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Printunique.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Printunique.txt")) | ||||||
|   [] |   [] | ||||||
|   [generalflagsgroup1] |   [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 | import Hledger.Cli.Utils | ||||||
| 
 | 
 | ||||||
| registermode = hledgerCommandMode | registermode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Register.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Register.txt")) | ||||||
|   [flagNone ["cumulative"]         (\opts -> setboolopt "change" opts) |   [flagNone ["cumulative"]         (\opts -> setboolopt "change" opts) | ||||||
|      "show running total from report start date (default)" |      "show running total from report start date (default)" | ||||||
|   ,flagNone ["historical","H"] (\opts -> setboolopt "historical" opts) |   ,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 | import Hledger.Cli.Commands.Register | ||||||
| 
 | 
 | ||||||
| registermatchmode = hledgerCommandMode | registermatchmode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Registermatch.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Registermatch.txt")) | ||||||
|   [] |   [] | ||||||
|   [generalflagsgroup1] |   [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 | import qualified Data.Algorithm.Diff as D | ||||||
| 
 | 
 | ||||||
| rewritemode = hledgerCommandMode | 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'" |   [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." |            "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" |   ,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 | 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" |   [flagNone ["cashflow"] (setboolopt "cashflow") "show all amounts that were used to compute returns" | ||||||
|   ,flagReq ["investment"] (\s opts -> Right $ setopt "investment" s opts) "QUERY" |   ,flagReq ["investment"] (\s opts -> Right $ setopt "investment" s opts) "QUERY" | ||||||
|     "query to select your investment transactions" |     "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 | 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." |   [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] |   [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 | import Hledger.Cli.CliOptions | ||||||
| 
 | 
 | ||||||
| tagsmode = hledgerCommandMode | tagsmode = hledgerCommandMode | ||||||
|   ($(hereFileRelative "Hledger/Cli/Commands/Tags.md")) |   ($(hereFileRelative "Hledger/Cli/Commands/Tags.txt")) | ||||||
|   [] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --  |   [] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --  | ||||||
|   [generalflagsgroup1] |   [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 | -- see: https://github.com/sol/hpack | ||||||
| -- | -- | ||||||
| -- hash: f7e09ce5d14e5c6c98b49831e7542ad9c40c969033841ca17e144a06bcda89cb | -- hash: 14d0eb516133f56c0d466c15ab014ce4e7d3b63a641b1ad70de250a2930e8784 | ||||||
| 
 | 
 | ||||||
| name:           hledger | name:           hledger | ||||||
| version:        1.12.99 | version:        1.12.99 | ||||||
| @ -61,6 +61,30 @@ extra-source-files: | |||||||
|     embeddedfiles/hledger_timedot.5 |     embeddedfiles/hledger_timedot.5 | ||||||
|     embeddedfiles/hledger_timedot.txt |     embeddedfiles/hledger_timedot.txt | ||||||
|     embeddedfiles/hledger_timedot.info |     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 | source-repository head | ||||||
|   type: git |   type: git | ||||||
|  | |||||||
| @ -46,11 +46,11 @@ _include_({{Hledger/Cli/Commands/Cashflow.md}}) | |||||||
| 
 | 
 | ||||||
| ## check-dates | ## check-dates | ||||||
| 
 | 
 | ||||||
| _include_({{Hledger/Cli/Commands/check-Dates.md}}) | _include_({{Hledger/Cli/Commands/Checkdates.md}}) | ||||||
| 
 | 
 | ||||||
| ## check-dupes | ## check-dupes | ||||||
| 
 | 
 | ||||||
| _include_({{Hledger/Cli/Commands/check-Dupes.md}}) | _include_({{Hledger/Cli/Commands/Checkdupes.md}}) | ||||||
| 
 | 
 | ||||||
| ## close | ## close | ||||||
| 
 | 
 | ||||||
| @ -82,7 +82,7 @@ _include_({{Hledger/Cli/Commands/Print.md}}) | |||||||
| 
 | 
 | ||||||
| ## print-unique | ## print-unique | ||||||
| 
 | 
 | ||||||
| _include_({{Hledger/Cli/Commands/print-Unique.md}}) | _include_({{Hledger/Cli/Commands/Printunique.md}}) | ||||||
| 
 | 
 | ||||||
| ## register | ## register | ||||||
| 
 | 
 | ||||||
| @ -90,7 +90,7 @@ _include_({{Hledger/Cli/Commands/Register.md}}) | |||||||
| 
 | 
 | ||||||
| ## register-match | ## register-match | ||||||
| 
 | 
 | ||||||
| _include_({{Hledger/Cli/Commands/register-Match.md}}) | _include_({{Hledger/Cli/Commands/Registermatch.md}}) | ||||||
| 
 | 
 | ||||||
| ## rewrite | ## rewrite | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -54,6 +54,31 @@ extra-source-files: | |||||||
| - embeddedfiles/hledger_timedot.5 | - embeddedfiles/hledger_timedot.5 | ||||||
| - embeddedfiles/hledger_timedot.txt | - embeddedfiles/hledger_timedot.txt | ||||||
| - embeddedfiles/hledger_timedot.info | - 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: | #data-files: | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user