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