doc: rename/flesh out "argument files" doc, add to cookbook
This commit is contained in:
		
							parent
							
								
									a9c4ac24cd
								
							
						
					
					
						commit
						a3fa09b604
					
				
							
								
								
									
										1
									
								
								Shake.hs
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Shake.hs
									
									
									
									
									
								
							| @ -146,6 +146,7 @@ main = do | ||||
|         ,"site/account-aliases.md" | ||||
|         ,"site/account-separator.md" | ||||
|         ,"site/investments.md" | ||||
|         ,"site/argfiles.md" | ||||
|         ] | ||||
| 
 | ||||
|       -- cookbook pages combined, ready for web output by hakyll | ||||
|  | ||||
| @ -32,11 +32,12 @@ Or, you can run the addon executable directly: `hledger-ui --watch`. | ||||
| Most hledger commands accept arguments after the command name,  | ||||
| which are often a [query](#queries), filtering the data in some way.  | ||||
| 
 | ||||
| ## Argument expansion | ||||
| ## Argument files | ||||
| 
 | ||||
| You can save a set of command line options/arguments in a file, one per line, | ||||
| and then reuse them by writing `@FILE` in a command line. | ||||
| (To prevent this expansion of `@`-arguments, precede them with a `--` argument.) | ||||
| and then reuse them by writing `@FILENAME` in a command line. | ||||
| To prevent this expansion of `@`-arguments, precede them with a `--` argument. | ||||
| For more, see [Save frequently used options](argsfiles.html). | ||||
| 
 | ||||
| ## Special characters | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										78
									
								
								site/argfiles.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								site/argfiles.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,78 @@ | ||||
| # Save frequently used options | ||||
| 
 | ||||
| You can save frequently used options and arguments in an  | ||||
| [argument file](manual#argument-files), one per | ||||
| line, then reuse them via a @FILE argument on the command line. | ||||
| (hledger 1.4+) | ||||
| 
 | ||||
| Here's an example. | ||||
| I keep frequently-used options for quick daily reports in a file | ||||
| called `simple.args`. The name can be anything; I use a `.args` suffix | ||||
| so I can find these easily. Here's the content of `simple.args`: | ||||
| ``` | ||||
| --alias=/:(business|personal):/=: | ||||
| --alias=/:(bank|cash|online):/=: | ||||
| --alias=/:bofi:/=:b | ||||
| --alias=/:unify:/=:u | ||||
| --alias=/:wf:/=:w | ||||
| -2 | ||||
| cur:. | ||||
| ``` | ||||
| 
 | ||||
| The format is one command-line flag or command-line argument per line. | ||||
| Now if I write `@simple.args` in a hledger command line, it will be replaced | ||||
| by all of the above options/flags: | ||||
| 
 | ||||
| These options are just an example, but in case you're wondering: | ||||
| they remove some detail, giving simplified reports which are easier for me to read at a glance. | ||||
| 
 | ||||
| - the aliases simplify the chart of accounts, hiding some distinctions (eg business vs. personal) and flattening some bank account names | ||||
| - the `-2` depth flag limits account depth to 2, hiding deeper subaccounts | ||||
| - the `cur:.` argument shows only single-character currencies, hiding a bunch of cluttersome commodities I don't want to see | ||||
| 
 | ||||
| ## Usage | ||||
| 
 | ||||
| Generate a balance report showing the simplified accounts: | ||||
| ```shell | ||||
| $ hledger bal @simple.args | ||||
| ``` | ||||
| Start a live-updating hledger-ui showing the simplified asset accounts only: | ||||
| ```shell | ||||
| $ hledger-ui --watch @simple.args assets | ||||
| ``` | ||||
| 
 | ||||
| Options in the arguments file can be overridden by similar options later on | ||||
| the command line, in the usual way. Eg, to show just a little more account detail: | ||||
| ```shell | ||||
| $ hledger bal @simple.args -3 | ||||
| ``` | ||||
| 
 | ||||
| ## Quoting | ||||
| 
 | ||||
| Special characters in the arguments file may need quoted, | ||||
| following the usual rules of your shell (bash, fish etc.),  | ||||
| but they'll need one less level of quoting than on the | ||||
| command line. I think: | ||||
| ```shell | ||||
| $ hledger bal @simple.args | ||||
| ``` | ||||
| is equivalent to writing: | ||||
| ```shell | ||||
| $ hledger bal "--alias=/:(business|personal):/=:" "--alias=/:(bank|cash|online):/=:" "--alias=/:bofi:/=:b" "--alias=/:unify:/=:u" "--alias=/:wf:/=:w" "-2" "cur:." | ||||
| ``` | ||||
| So in this example, using the bash shell, the `|` pipe character does  | ||||
| not need to be quoted in the arguments file (and should not be).  | ||||
| 
 | ||||
| ## Suppressing this feature | ||||
| 
 | ||||
| If you actually need to write an argument beginning with @,  | ||||
| eg let's say you have an account pattern beginning with that character,  | ||||
| you'll want a way to disable this feature.  On unix systems at least,  | ||||
| you can do that by inserting a `--` argument first. Eg: | ||||
| ``` | ||||
| $ hledger bal @somewhere.com       # looks for additional arguments in the ./somewhere.com file | ||||
| $ hledger bal -- @somewhere.com    # matches account names containing "@somewhere.com" | ||||
| ``` | ||||
| 
 | ||||
| On windows, this might or might not require a hledger built with GHC 8.2+.  | ||||
| (Let us know.) | ||||
| @ -90,7 +90,9 @@ For more docs relevant to all ledger-likes, see [plaintextaccounting.org](http:/ | ||||
| 
 | ||||
| 
 | ||||
| ### More.. | ||||
| [PTA: Common tasks](http://plaintextaccounting.org/#common-tasks) | ||||
| 
 | ||||
| [Save frequently used options](argfiles.html)\ | ||||
| [PTA: Common tasks](http://plaintextaccounting.org/#common-tasks)\ | ||||
| 
 | ||||
| </div> | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user