doc: rename/flesh out "argument files" doc, add to cookbook

This commit is contained in:
Simon Michael 2017-10-31 12:37:01 -07:00
parent a9c4ac24cd
commit a3fa09b604
4 changed files with 86 additions and 4 deletions

View File

@ -146,6 +146,7 @@ main = do
,"site/account-aliases.md" ,"site/account-aliases.md"
,"site/account-separator.md" ,"site/account-separator.md"
,"site/investments.md" ,"site/investments.md"
,"site/argfiles.md"
] ]
-- cookbook pages combined, ready for web output by hakyll -- cookbook pages combined, ready for web output by hakyll

View File

@ -32,11 +32,12 @@ Or, you can run the addon executable directly: `hledger-ui --watch`.
Most hledger commands accept arguments after the command name, Most hledger commands accept arguments after the command name,
which are often a [query](#queries), filtering the data in some way. 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, 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. and then reuse them by writing `@FILENAME` in a command line.
(To prevent this expansion of `@`-arguments, precede them with a `--` argument.) To prevent this expansion of `@`-arguments, precede them with a `--` argument.
For more, see [Save frequently used options](argsfiles.html).
## Special characters ## Special characters

78
site/argfiles.md Normal file
View 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.)

View File

@ -90,7 +90,9 @@ For more docs relevant to all ledger-likes, see [plaintextaccounting.org](http:/
### More.. ### More..
[PTA: Common tasks](http://plaintextaccounting.org/#common-tasks)
[Save frequently used options](argfiles.html)\
[PTA: Common tasks](http://plaintextaccounting.org/#common-tasks)\
</div> </div>