;regen embedded manuals
This commit is contained in:
		
							parent
							
								
									7ef3ddd1e6
								
							
						
					
					
						commit
						5e54920160
					
				| @ -1,46 +1,46 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger\-api" "1" "March 2019" "hledger\-api 1.14" "hledger User Manuals" | .TH "hledger-api" "1" "March 2019" "hledger-api 1.14.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .SH NAME | .SH NAME | ||||||
| .PP | .PP | ||||||
| hledger\-api \- web API server for the hledger accounting tool | hledger-api - web API server for the hledger accounting tool | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| .PP | .PP | ||||||
| \f[C]hledger\-api\ [OPTIONS]\f[] | \f[C]hledger-api [OPTIONS]\f[R] | ||||||
| .PD 0 | .PD 0 | ||||||
| .P | .P | ||||||
| .PD | .PD | ||||||
| \f[C]hledger\ api\ \-\-\ [OPTIONS]\f[] | \f[C]hledger api -- [OPTIONS]\f[R] | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| .PP | .PP | ||||||
| hledger is a cross\-platform program for tracking money, time, or any | hledger is a cross-platform program for tracking money, time, or any | ||||||
| other commodity, using double\-entry accounting and a simple, editable | other commodity, using double-entry accounting and a simple, editable | ||||||
| file format. | file format. | ||||||
| hledger is inspired by and largely compatible with ledger(1). | hledger is inspired by and largely compatible with ledger(1). | ||||||
| .PP | .PP | ||||||
| hledger\-api is a simple web API server, intended to support | hledger-api is a simple web API server, intended to support client-side | ||||||
| client\-side web apps operating on hledger data. | web apps operating on hledger data. | ||||||
| It comes with a series of simple client\-side app examples, which drive | It comes with a series of simple client-side app examples, which drive | ||||||
| its evolution. | its evolution. | ||||||
| .PP | .PP | ||||||
| Like hledger, it reads data from one or more files in hledger journal, | Like hledger, it reads data from one or more files in hledger journal, | ||||||
| timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or | timeclock, timedot, or CSV format specified with \f[C]-f\f[R], or | ||||||
| \f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows, | \f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows, | ||||||
| perhaps \f[C]C:/Users/USER/.hledger.journal\f[]). | perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| For more about this see hledger(1), hledger_journal(5) etc. | For more about this see hledger(1), hledger_journal(5) etc. | ||||||
| .PP | .PP | ||||||
| The server listens on IP address 127.0.0.1, accessible only to local | The server listens on IP address 127.0.0.1, accessible only to local | ||||||
| requests, by default. | requests, by default. | ||||||
| You can change this with \f[C]\-\-host\f[], eg | You can change this with \f[C]--host\f[R], eg \f[C]--host 0.0.0.0\f[R] | ||||||
| \f[C]\-\-host\ 0.0.0.0\f[] to listen on all addresses. | to listen on all addresses. | ||||||
| Note there is no other access control, and hledger\-api allows file | Note there is no other access control, and hledger-api allows file | ||||||
| browsing, so on shared machines you will certainly need to put it behind | browsing, so on shared machines you will certainly need to put it behind | ||||||
| an authenticating proxy to restrict access. | an authenticating proxy to restrict access. | ||||||
| .PP | .PP | ||||||
| You can change the TCP port it listens on (default: 8001) with | You can change the TCP port it listens on (default: 8001) with | ||||||
| \f[C]\-p\ PORT\f[]. | \f[C]-p PORT\f[R]. | ||||||
| .PP | .PP | ||||||
| API methods look like: | API methods look like: | ||||||
| .IP | .IP | ||||||
| @ -52,73 +52,59 @@ API methods look like: | |||||||
| /api/v1/commodities | /api/v1/commodities | ||||||
| /api/v1/accounts | /api/v1/accounts | ||||||
| /api/v1/accounts/ACCTNAME | /api/v1/accounts/ACCTNAME | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| See \f[C]/api/swagger.json\f[] for a full list in Swagger 2.0 format. | See \f[C]/api/swagger.json\f[R] for a full list in Swagger 2.0 format. | ||||||
| (Or you can run \f[C]hledger\-api\ \-\-swagger\f[] to print this in the | (Or you can run \f[C]hledger-api --swagger\f[R] to print this in the | ||||||
| console.) | console.) | ||||||
| .PP | .PP | ||||||
| hledger\-api also serves files, from the current directory by default, | hledger-api also serves files, from the current directory by default, | ||||||
| and the \f[C]/\f[] path will also show a directory listing. | and the \f[C]/\f[R] path will also show a directory listing. | ||||||
| This is convenient for serving client\-side web code, in addition to the | This is convenient for serving client-side web code, in addition to the | ||||||
| server\-side api. | server-side api. | ||||||
| .SH OPTIONS | .SH OPTIONS | ||||||
| .PP | .PP | ||||||
| Note: if invoking hledger\-api as a hledger subcommand, write | Note: if invoking hledger-api as a hledger subcommand, write | ||||||
| \f[C]\-\-\f[] before options as shown above. | \f[C]--\f[R] before options as shown above. | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-f\ \-\-file=FILE\f[] | .B \f[C]-f --file=FILE\f[R] | ||||||
| use a different input file. | use a different input file. | ||||||
| For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or | For stdin, use - (default: \f[C]$LEDGER_FILE\f[R] or | ||||||
| \f[C]$HOME/.hledger.journal\f[]) | \f[C]$HOME/.hledger.journal\f[R]) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-d\ \-\-static\-dir=DIR\f[] | .B \f[C]-d --static-dir=DIR\f[R] | ||||||
| serve files from a different directory (default: \f[C]\&.\f[]) | serve files from a different directory (default: \f[C].\f[R]) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-host=IPADDR\f[] | .B \f[C]--host=IPADDR\f[R] | ||||||
| listen on this IP address (default: 127.0.0.1) | listen on this IP address (default: 127.0.0.1) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-p\ \-\-port=PORT\f[] | .B \f[C]-p --port=PORT\f[R] | ||||||
| listen on this TCP port (default: 8001) | listen on this TCP port (default: 8001) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-swagger\f[] | .B \f[C]--swagger\f[R] | ||||||
| print API docs in Swagger 2.0 format, and exit | print API docs in Swagger 2.0 format, and exit | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-version\f[] | .B \f[C]--version\f[R] | ||||||
| show version | show version | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-h\ \-\-help\f[] | .B \f[C]-h --help\f[R] | ||||||
| show usage | show usage | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .SH ENVIRONMENT | .SH ENVIRONMENT | ||||||
| .PP | .PP | ||||||
| \f[B]LEDGER_FILE\f[] The journal file path when not specified with | \f[B]LEDGER_FILE\f[R] The journal file path when not specified with | ||||||
| \f[C]\-f\f[]. | \f[C]-f\f[R]. | ||||||
| Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps | Default: \f[C]\[ti]/.hledger.journal\f[R] (on windows, perhaps | ||||||
| \f[C]C:/Users/USER/.hledger.journal\f[]). | \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| .SH FILES | .SH FILES | ||||||
| .PP | .PP | ||||||
| Reads data from one or more files in hledger journal, timeclock, | Reads data from one or more files in hledger journal, timeclock, | ||||||
| timedot, or CSV format specified with \f[C]\-f\f[], or | timedot, or CSV format specified with \f[C]-f\f[R], or | ||||||
| \f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows, | \f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows, | ||||||
| perhaps \f[C]C:/Users/USER/.hledger.journal\f[]). | perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| .SH BUGS | .SH BUGS | ||||||
| .PP | .PP | ||||||
| The need to precede options with \f[C]\-\-\f[] when invoked from hledger | The need to precede options with \f[C]--\f[R] when invoked from hledger | ||||||
| is awkward. | is awkward. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,8 +3,8 @@ This is hledger-api.info, produced by makeinfo version 6.5 from stdin. | |||||||
|  |  | ||||||
| File: hledger-api.info,  Node: Top,  Next: OPTIONS,  Up: (dir) | File: hledger-api.info,  Node: Top,  Next: OPTIONS,  Up: (dir) | ||||||
| 
 | 
 | ||||||
| hledger-api(1) hledger-api 1.14 | hledger-api(1) hledger-api 1.14.99 | ||||||
| ******************************* | ********************************** | ||||||
| 
 | 
 | ||||||
| hledger-api is a simple web API server, intended to support client-side | hledger-api is a simple web API server, intended to support client-side | ||||||
| web apps operating on hledger data.  It comes with a series of simple | web apps operating on hledger data.  It comes with a series of simple | ||||||
| @ -41,6 +41,7 @@ you can run 'hledger-api --swagger' to print this in the console.) | |||||||
|    hledger-api also serves files, from the current directory by default, |    hledger-api also serves files, from the current directory by default, | ||||||
| and the '/' path will also show a directory listing.  This is convenient | and the '/' path will also show a directory listing.  This is convenient | ||||||
| for serving client-side web code, in addition to the server-side api. | for serving client-side web code, in addition to the server-side api. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * OPTIONS:: | * OPTIONS:: | ||||||
| @ -80,7 +81,7 @@ options as shown above. | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top72 | Node: Top72 | ||||||
| Node: OPTIONS1660 | Node: OPTIONS1667 | ||||||
| Ref: #options1745 | Ref: #options1752 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -27,11 +27,11 @@ DESCRIPTION | |||||||
|        hledger_journal(5) etc. |        hledger_journal(5) etc. | ||||||
| 
 | 
 | ||||||
|        The server listens on IP address 127.0.0.1, accessible  only  to  local |        The server listens on IP address 127.0.0.1, accessible  only  to  local | ||||||
|        requests,   by   default.    You   can  change  this  with  --host,  eg |        requests,  by  default.   You  can  change  this with --host, eg --host | ||||||
|        --host 0.0.0.0 to listen on all addresses.   Note  there  is  no  other |        0.0.0.0 to listen on all addresses.  Note there is no other access con- | ||||||
|        access  control,  and  hledger-api  allows  file browsing, so on shared |        trol,  and  hledger-api allows file browsing, so on shared machines you | ||||||
|        machines you will certainly need to put  it  behind  an  authenticating |        will certainly need  to  put  it  behind  an  authenticating  proxy  to | ||||||
|        proxy to restrict access. |        restrict access. | ||||||
| 
 | 
 | ||||||
|        You can change the TCP port it listens on (default: 8001) with -p PORT. |        You can change the TCP port it listens on (default: 8001) with -p PORT. | ||||||
| 
 | 
 | ||||||
| @ -117,4 +117,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger-api 1.14                  March 2019                    hledger-api(1) | hledger-api 1.14.99               March 2019                    hledger-api(1) | ||||||
|  | |||||||
| @ -1,17 +1,17 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger_csv" "5" "March 2019" "hledger 1.14" "hledger User Manuals" | .TH "hledger_csv" "5" "March 2019" "hledger 1.14.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .SH NAME | .SH NAME | ||||||
| .PP | .PP | ||||||
| CSV \- how hledger reads CSV data, and the CSV rules file format | CSV - how hledger reads CSV data, and the CSV rules file format | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| .PP | .PP | ||||||
| hledger can read CSV (comma\-separated value) files as if they were | hledger can read CSV (comma-separated value) files as if they were | ||||||
| journal files, automatically converting each CSV record into a | journal files, automatically converting each CSV record into a | ||||||
| transaction. | transaction. | ||||||
| (To learn about \f[I]writing\f[] CSV, see CSV output.) | (To learn about \f[I]writing\f[R] CSV, see CSV output.) | ||||||
| .PP | .PP | ||||||
| Converting CSV to transactions requires some special conversion rules. | Converting CSV to transactions requires some special conversion rules. | ||||||
| These do several things: | These do several things: | ||||||
| @ -24,58 +24,57 @@ templating language | |||||||
| they can add refinements based on patterns in the CSV data, eg | they can add refinements based on patterns in the CSV data, eg | ||||||
| categorizing transactions with more detailed account names. | categorizing transactions with more detailed account names. | ||||||
| .PP | .PP | ||||||
| When reading a CSV file named \f[C]FILE.csv\f[], hledger looks for a | When reading a CSV file named \f[C]FILE.csv\f[R], hledger looks for a | ||||||
| conversion rules file named \f[C]FILE.csv.rules\f[] in the same | conversion rules file named \f[C]FILE.csv.rules\f[R] in the same | ||||||
| directory. | directory. | ||||||
| You can override this with the \f[C]\-\-rules\-file\f[] option. | You can override this with the \f[C]--rules-file\f[R] option. | ||||||
| If the rules file does not exist, hledger will auto\-create one with | If the rules file does not exist, hledger will auto-create one with some | ||||||
| some example rules, which you\[aq]ll need to adjust. | example rules, which you\[aq]ll need to adjust. | ||||||
| .PP | .PP | ||||||
| At minimum, the rules file must identify the \f[C]date\f[] and | At minimum, the rules file must identify the date and amount fields. | ||||||
| \f[C]amount\f[] fields. | It\[aq]s often necessary to specify the date format, and the number of | ||||||
| It may also be necessary to specify the date format, and the number of | header lines to skip, also. | ||||||
| header lines to skip. |  | ||||||
| Eg: | Eg: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| fields\ date,\ _,\ _,\ amount | fields date, _, _, amount | ||||||
| date\-format\ \ %d/%m/%Y | date-format  %d/%m/%Y | ||||||
| skip\ 1 | skip 1 | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| A more complete example: | A more complete example: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ hledger\ CSV\ rules\ for\ amazon.com\ order\ history | # hledger CSV rules for amazon.com order history | ||||||
| 
 | 
 | ||||||
| #\ sample: | # sample: | ||||||
| #\ "Date","Type","To/From","Name","Status","Amount","Fees","Transaction\ ID" | # \[dq]Date\[dq],\[dq]Type\[dq],\[dq]To/From\[dq],\[dq]Name\[dq],\[dq]Status\[dq],\[dq]Amount\[dq],\[dq]Fees\[dq],\[dq]Transaction ID\[dq] | ||||||
| #\ "Jul\ 29,\ 2012","Payment","To","Adapteva,\ Inc.","Completed","$25.00","$0.00","17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL" | # \[dq]Jul 29, 2012\[dq],\[dq]Payment\[dq],\[dq]To\[dq],\[dq]Adapteva, Inc.\[dq],\[dq]Completed\[dq],\[dq]$25.00\[dq],\[dq]$0.00\[dq],\[dq]17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL\[dq] | ||||||
| 
 | 
 | ||||||
| #\ skip\ one\ header\ line | # skip one header line | ||||||
| skip\ 1 | skip 1 | ||||||
| 
 | 
 | ||||||
| #\ name\ the\ csv\ fields\ (and\ assign\ the\ transaction\[aq]s\ date,\ amount\ and\ code) | # name the csv fields (and assign the transaction\[aq]s date, amount and code) | ||||||
| fields\ date,\ _,\ toorfrom,\ name,\ amzstatus,\ amount,\ fees,\ code | fields date, _, toorfrom, name, amzstatus, amount, fees, code | ||||||
| 
 | 
 | ||||||
| #\ how\ to\ parse\ the\ date | # how to parse the date | ||||||
| date\-format\ %b\ %\-d,\ %Y | date-format %b %-d, %Y | ||||||
| 
 | 
 | ||||||
| #\ combine\ two\ fields\ to\ make\ the\ description | # combine two fields to make the description | ||||||
| description\ %toorfrom\ %name | description %toorfrom %name | ||||||
| 
 | 
 | ||||||
| #\ save\ these\ fields\ as\ tags | # save these fields as tags | ||||||
| comment\ \ \ \ \ status:%amzstatus,\ fees:%fees | comment     status:%amzstatus, fees:%fees | ||||||
| 
 | 
 | ||||||
| #\ set\ the\ base\ account\ for\ all\ transactions | # set the base account for all transactions | ||||||
| account1\ \ \ \ assets:amazon | account1    assets:amazon | ||||||
| 
 | 
 | ||||||
| #\ flip\ the\ sign\ on\ the\ amount | # flip the sign on the amount | ||||||
| amount\ \ \ \ \ \ \-%amount | amount      -%amount | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| For more examples, see Convert CSV files. | For more examples, see Convert CSV files. | ||||||
| @ -83,11 +82,11 @@ For more examples, see Convert CSV files. | |||||||
| .PP | .PP | ||||||
| The following seven kinds of rule can appear in the rules file, in any | The following seven kinds of rule can appear in the rules file, in any | ||||||
| order. | order. | ||||||
| Blank lines and lines beginning with \f[C]#\f[] or \f[C];\f[] are | Blank lines and lines beginning with \f[C]#\f[R] or \f[C];\f[R] are | ||||||
| ignored. | ignored. | ||||||
| .SS skip | .SS skip | ||||||
| .PP | .PP | ||||||
| \f[C]skip\f[]\f[I]\f[CI]N\f[I]\f[] | \f[C]skip\f[R]\f[I]\f[CI]N\f[I]\f[R] | ||||||
| .PP | .PP | ||||||
| Skip this number of CSV records at the beginning. | Skip this number of CSV records at the beginning. | ||||||
| You\[aq]ll need this whenever your CSV data contains header lines. | You\[aq]ll need this whenever your CSV data contains header lines. | ||||||
| @ -95,122 +94,123 @@ Eg: | |||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ ignore\ the\ first\ CSV\ line | # ignore the first CSV line | ||||||
| skip\ 1 | skip 1 | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .SS date\-format | .SS date-format | ||||||
| .PP | .PP | ||||||
| \f[C]date\-format\f[]\f[I]\f[CI]DATEFMT\f[I]\f[] | \f[C]date-format\f[R]\f[I]\f[CI]DATEFMT\f[I]\f[R] | ||||||
| .PP | .PP | ||||||
| When your CSV date fields are not formatted like \f[C]YYYY/MM/DD\f[] (or | When your CSV date fields are not formatted like \f[C]YYYY/MM/DD\f[R] | ||||||
| \f[C]YYYY\-MM\-DD\f[] or \f[C]YYYY.MM.DD\f[]), you\[aq]ll need to | (or \f[C]YYYY-MM-DD\f[R] or \f[C]YYYY.MM.DD\f[R]), you\[aq]ll need to | ||||||
| specify the format. | specify the format. | ||||||
| DATEFMT is a strptime\-like date parsing pattern, which must parse the | DATEFMT is a strptime-like date parsing pattern, which must parse the | ||||||
| date field values completely. | date field values completely. | ||||||
| Examples: | Examples: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ for\ dates\ like\ "11/06/2013": | # for dates like \[dq]11/06/2013\[dq]: | ||||||
| date\-format\ %m/%d/%Y | date-format %m/%d/%Y | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ for\ dates\ like\ "6/11/2013"\ (note\ the\ \-\ to\ make\ leading\ zeros\ optional): | # for dates like \[dq]6/11/2013\[dq] (note the - to make leading zeros optional): | ||||||
| date\-format\ %\-d/%\-m/%Y | date-format %-d/%-m/%Y | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ for\ dates\ like\ "2013\-Nov\-06": | # for dates like \[dq]2013-Nov-06\[dq]: | ||||||
| date\-format\ %Y\-%h\-%d | date-format %Y-%h-%d | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ for\ dates\ like\ "11/6/2013\ 11:32\ PM": | # for dates like \[dq]11/6/2013 11:32 PM\[dq]: | ||||||
| date\-format\ %\-m/%\-d/%Y\ %l:%M\ %p | date-format %-m/%-d/%Y %l:%M %p | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .SS field list | .SS field list | ||||||
| .PP | .PP | ||||||
| \f[C]fields\f[]\f[I]\f[CI]FIELDNAME1\f[I]\f[], | \f[C]fields\f[R]\f[I]\f[CI]FIELDNAME1\f[I]\f[R], | ||||||
| \f[I]\f[CI]FIELDNAME2\f[I]\f[]... | \f[I]\f[CI]FIELDNAME2\f[I]\f[R]... | ||||||
| .PP | .PP | ||||||
| This (a) names the CSV fields, in order (names may not contain | This (a) names the CSV fields, in order (names may not contain | ||||||
| whitespace; uninteresting names may be left blank), and (b) assigns them | whitespace; uninteresting names may be left blank), and (b) assigns them | ||||||
| to journal entry fields if you use any of these standard field names: | to journal entry fields if you use any of these standard field names: | ||||||
| \f[C]date\f[], \f[C]date2\f[], \f[C]status\f[], \f[C]code\f[], | \f[C]date\f[R], \f[C]date2\f[R], \f[C]status\f[R], \f[C]code\f[R], | ||||||
| \f[C]description\f[], \f[C]comment\f[], \f[C]account1\f[], | \f[C]description\f[R], \f[C]comment\f[R], \f[C]account1\f[R], | ||||||
| \f[C]account2\f[], \f[C]amount\f[], \f[C]amount\-in\f[], | \f[C]account2\f[R], \f[C]amount\f[R], \f[C]amount-in\f[R], | ||||||
| \f[C]amount\-out\f[], \f[C]currency\f[], \f[C]balance\f[]. | \f[C]amount-out\f[R], \f[C]currency\f[R], \f[C]balance\f[R], | ||||||
|  | \f[C]balance1\f[R], \f[C]balance2\f[R]. | ||||||
| Eg: | Eg: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ use\ the\ 1st,\ 2nd\ and\ 4th\ CSV\ fields\ as\ the\ entry\[aq]s\ date,\ description\ and\ amount, | # use the 1st, 2nd and 4th CSV fields as the entry\[aq]s date, description and amount, | ||||||
| #\ and\ give\ the\ 7th\ and\ 8th\ fields\ meaningful\ names\ for\ later\ reference: | # and give the 7th and 8th fields meaningful names for later reference: | ||||||
| # | # | ||||||
| #\ CSV\ field: | # CSV field: | ||||||
| #\ \ \ \ \ \ 1\ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ \ 3\ 4\ \ \ \ \ \ \ 5\ 6\ 7\ \ \ \ \ \ \ \ \ \ 8 | #      1     2            3 4       5 6 7          8 | ||||||
| #\ entry\ field: | # entry field: | ||||||
| fields\ date,\ description,\ ,\ amount,\ ,\ ,\ somefield,\ anotherfield | fields date, description, , amount, , , somefield, anotherfield | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .SS field assignment | .SS field assignment | ||||||
| .PP | .PP | ||||||
| \f[I]\f[CI]ENTRYFIELDNAME\f[I]\f[] \f[I]\f[CI]FIELDVALUE\f[I]\f[] | \f[I]\f[CI]ENTRYFIELDNAME\f[I]\f[R] \f[I]\f[CI]FIELDVALUE\f[I]\f[R] | ||||||
| .PP | .PP | ||||||
| This sets a journal entry field (one of the standard names above) to the | This sets a journal entry field (one of the standard names above) to the | ||||||
| given text value, which can include CSV field values interpolated by | given text value, which can include CSV field values interpolated by | ||||||
| name (\f[C]%CSVFIELDNAME\f[]) or 1\-based position (\f[C]%N\f[]). | name (\f[C]%CSVFIELDNAME\f[R]) or 1-based position (\f[C]%N\f[R]). | ||||||
|  Eg: | Eg: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ set\ the\ amount\ to\ the\ 4th\ CSV\ field\ with\ "USD\ "\ prepended | # set the amount to the 4th CSV field with \[dq]USD \[dq] prepended | ||||||
| amount\ USD\ %4 | amount USD %4 | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ combine\ three\ fields\ to\ make\ a\ comment\ (containing\ two\ tags) | # combine three fields to make a comment (containing two tags) | ||||||
| comment\ note:\ %somefield\ \-\ %anotherfield,\ date:\ %1 | comment note: %somefield - %anotherfield, date: %1 | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| Field assignments can be used instead of or in addition to a field list. | Field assignments can be used instead of or in addition to a field list. | ||||||
| .SS conditional block | .SS conditional block | ||||||
| .PP | .PP | ||||||
| \f[C]if\f[] \f[I]\f[CI]PATTERN\f[I]\f[] | \f[C]if\f[R] \f[I]\f[CI]PATTERN\f[I]\f[R] | ||||||
| .PD 0 | .PD 0 | ||||||
| .P | .P | ||||||
| .PD | .PD | ||||||
| \ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[]... | \ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[R]... | ||||||
| .PP | .PP | ||||||
| \f[C]if\f[] | \f[C]if\f[R] | ||||||
| .PD 0 | .PD 0 | ||||||
| .P | .P | ||||||
| .PD | .PD | ||||||
| \f[I]\f[CI]PATTERN\f[I]\f[] | \f[I]\f[CI]PATTERN\f[I]\f[R] | ||||||
| .PD 0 | .PD 0 | ||||||
| .P | .P | ||||||
| .PD | .PD | ||||||
| \f[I]\f[CI]PATTERN\f[I]\f[]... | \f[I]\f[CI]PATTERN\f[I]\f[R]... | ||||||
| .PD 0 | .PD 0 | ||||||
| .P | .P | ||||||
| .PD | .PD | ||||||
| \ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[]... | \ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[R]... | ||||||
| .PP | .PP | ||||||
| This applies one or more field assignments, only to those CSV records | This applies one or more field assignments, only to those CSV records | ||||||
| matched by one of the PATTERNs. | matched by one of the PATTERNs. | ||||||
| The patterns are case\-insensitive regular expressions which match | The patterns are case-insensitive regular expressions which match | ||||||
| anywhere within the whole CSV record (it\[aq]s not yet possible to match | anywhere within the whole CSV record (it\[aq]s not yet possible to match | ||||||
| within a specific field). | within a specific field). | ||||||
| When there are multiple patterns they can be written on separate lines, | When there are multiple patterns they can be written on separate lines, | ||||||
| @ -221,46 +221,46 @@ Examples: | |||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ if\ the\ CSV\ record\ contains\ "groceries",\ set\ account2\ to\ "expenses:groceries" | # if the CSV record contains \[dq]groceries\[dq], set account2 to \[dq]expenses:groceries\[dq] | ||||||
| if\ groceries | if groceries | ||||||
| \ account2\ expenses:groceries |  account2 expenses:groceries | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ if\ the\ CSV\ record\ contains\ any\ of\ these\ patterns,\ set\ account2\ and\ comment\ as\ shown | # if the CSV record contains any of these patterns, set account2 and comment as shown | ||||||
| if | if | ||||||
| monthly\ service\ fee | monthly service fee | ||||||
| atm\ transaction\ fee | atm transaction fee | ||||||
| banking\ thru\ software | banking thru software | ||||||
| \ account2\ expenses:business:banking |  account2 expenses:business:banking | ||||||
| \ comment\ \ XXX\ deductible\ ?\ check\ it |  comment  XXX deductible ? check it | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .SS include | .SS include | ||||||
| .PP | .PP | ||||||
| \f[C]include\f[]\f[I]\f[CI]RULESFILE\f[I]\f[] | \f[C]include\f[R]\f[I]\f[CI]RULESFILE\f[I]\f[R] | ||||||
| .PP | .PP | ||||||
| Include another rules file at this point. | Include another rules file at this point. | ||||||
| \f[C]RULESFILE\f[] is either an absolute file path or a path relative to | \f[C]RULESFILE\f[R] is either an absolute file path or a path relative | ||||||
| the current file\[aq]s directory. | to the current file\[aq]s directory. | ||||||
| Eg: | Eg: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ rules\ reused\ with\ several\ CSV\ files | # rules reused with several CSV files | ||||||
| include\ common.rules | include common.rules | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .SS newest\-first | .SS newest-first | ||||||
| .PP | .PP | ||||||
| \f[C]newest\-first\f[] | \f[C]newest-first\f[R] | ||||||
| .PP | .PP | ||||||
| Consider adding this rule if all of the following are true: you might be | Consider adding this rule if all of the following are true: you might be | ||||||
| processing just one day of data, your CSV records are in reverse | processing just one day of data, your CSV records are in reverse | ||||||
| chronological order (newest first), and you care about preserving the | chronological order (newest first), and you care about preserving the | ||||||
| order of same\-day transactions. | order of same-day transactions. | ||||||
| It usually isn\[aq]t needed, because hledger autodetects the CSV order, | It usually isn\[aq]t needed, because hledger autodetects the CSV order, | ||||||
| but when all CSV records have the same date it will assume they are | but when all CSV records have the same date it will assume they are | ||||||
| oldest first. | oldest first. | ||||||
| @ -268,49 +268,69 @@ oldest first. | |||||||
| .SS CSV ordering | .SS CSV ordering | ||||||
| .PP | .PP | ||||||
| The generated journal entries will be sorted by date. | The generated journal entries will be sorted by date. | ||||||
| The order of same\-day entries will be preserved (except in the special | The order of same-day entries will be preserved (except in the special | ||||||
| case where you might need \f[C]newest\-first\f[], see above). | case where you might need \f[C]newest-first\f[R], see above). | ||||||
| .SS CSV accounts | .SS CSV accounts | ||||||
| .PP | .PP | ||||||
| Each journal entry will have two postings, to \f[C]account1\f[] and | Each journal entry will have two postings, to \f[C]account1\f[R] and | ||||||
| \f[C]account2\f[] respectively. | \f[C]account2\f[R] respectively. | ||||||
| It\[aq]s not yet possible to generate entries with more than two | It\[aq]s not yet possible to generate entries with more than two | ||||||
| postings. | postings. | ||||||
| It\[aq]s conventional and recommended to use \f[C]account1\f[] for the | It\[aq]s conventional and recommended to use \f[C]account1\f[R] for the | ||||||
| account whose CSV we are reading. | account whose CSV we are reading. | ||||||
| .SS CSV amounts | .SS CSV amounts | ||||||
| .PP | .PP | ||||||
| The \f[C]amount\f[] field sets the amount of the \f[C]account1\f[] | A transaction amount must be set, in one of these ways: | ||||||
| posting. | .IP \[bu] 2 | ||||||
| .PP | with an \f[C]amount\f[R] field assignment, which sets the first | ||||||
| If the CSV has debit/credit amounts in separate fields, assign to the | posting\[aq]s amount | ||||||
| \f[C]amount\-in\f[] and \f[C]amount\-out\f[] pseudo fields instead. | .IP \[bu] 2 | ||||||
| (Whichever one has a value will be used, with appropriate sign. | (When the CSV has debit and credit amounts in separate fields:) | ||||||
| If both contain a value, it may not work so well.) | .PD 0 | ||||||
| .PP | .P | ||||||
| If an amount value is parenthesised, it will be de\-parenthesised and | .PD | ||||||
| sign\-flipped. | with field assignments for the \f[C]amount-in\f[R] and | ||||||
|  | \f[C]amount-out\f[R] pseudo fields (both of them). | ||||||
|  | Whichever one has a value will be used, with appropriate sign. | ||||||
|  | If both contain a value, it might not work so well. | ||||||
|  | .IP \[bu] 2 | ||||||
|  | or implicitly by means of a balance assignment (see below). | ||||||
| .PP | .PP | ||||||
|  | There is some special handling for sign in amounts: | ||||||
|  | .IP \[bu] 2 | ||||||
|  | If an amount value is parenthesised, it will be de-parenthesised and | ||||||
|  | sign-flipped. | ||||||
|  | .IP \[bu] 2 | ||||||
| If an amount value begins with a double minus sign, those will cancel | If an amount value begins with a double minus sign, those will cancel | ||||||
| out and be removed. | out and be removed. | ||||||
| .PP | .PP | ||||||
| If the CSV has the currency symbol in a separate field, assign that to | If the currency/commodity symbol is provided as a separate CSV field, | ||||||
| the \f[C]currency\f[] pseudo field to have it prepended to the amount. | assign it to the \f[C]currency\f[R] pseudo field; the symbol will be | ||||||
| Or, you can use a field assignment to \f[C]amount\f[] that interpolates | prepended to the amount (TODO: when there is an amount). | ||||||
| both CSV fields (giving more control, eg to put the currency symbol on | Or, you can use an \f[C]amount\f[R] field assignment for more control, | ||||||
| the right). | eg: | ||||||
| .SS CSV balance assertions | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | fields date,description,currency,amount | ||||||
|  | amount %amount %currency | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .SS CSV balance assertions/assignments | ||||||
| .PP | .PP | ||||||
| If the CSV includes a running balance, you can assign that to the | If the CSV includes a running balance, you can assign that to one of the | ||||||
| \f[C]balance\f[] pseudo field; whenever the running balance value is | pseudo fields \f[C]balance\f[R] (or \f[C]balance1\f[R]) or | ||||||
| non\-empty, it will be asserted as the balance after the | \f[C]balance2\f[R]. | ||||||
| \f[C]account1\f[] posting. | This will generate a balance assertion (or if the amount is left empty, | ||||||
|  | a balance assignment), on the first or second posting, whenever the | ||||||
|  | running balance field is non-empty. | ||||||
|  | (TODO: #1000) | ||||||
| .SS Reading multiple CSV files | .SS Reading multiple CSV files | ||||||
| .PP | .PP | ||||||
| You can read multiple CSV files at once using multiple \f[C]\-f\f[] | You can read multiple CSV files at once using multiple \f[C]-f\f[R] | ||||||
| arguments on the command line, and hledger will look for a | arguments on the command line, and hledger will look for a | ||||||
| correspondingly\-named rules file for each. | correspondingly-named rules file for each. | ||||||
| Note if you use the \f[C]\-\-rules\-file\f[] option, this one rules file | Note if you use the \f[C]--rules-file\f[R] option, this one rules file | ||||||
| will be used for all the CSV files being read. | will be used for all the CSV files being read. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,8 +3,8 @@ This is hledger_csv.info, produced by makeinfo version 6.5 from stdin. | |||||||
|  |  | ||||||
| File: hledger_csv.info,  Node: Top,  Next: CSV RULES,  Up: (dir) | File: hledger_csv.info,  Node: Top,  Next: CSV RULES,  Up: (dir) | ||||||
| 
 | 
 | ||||||
| hledger_csv(5) hledger 1.14 | hledger_csv(5) hledger 1.14.99 | ||||||
| *************************** | ****************************** | ||||||
| 
 | 
 | ||||||
| hledger can read CSV (comma-separated value) files as if they were | hledger can read CSV (comma-separated value) files as if they were | ||||||
| journal files, automatically converting each CSV record into a | journal files, automatically converting each CSV record into a | ||||||
| @ -25,9 +25,9 @@ can override this with the '--rules-file' option.  If the rules file | |||||||
| does not exist, hledger will auto-create one with some example rules, | does not exist, hledger will auto-create one with some example rules, | ||||||
| which you'll need to adjust. | which you'll need to adjust. | ||||||
| 
 | 
 | ||||||
|    At minimum, the rules file must identify the 'date' and 'amount' |    At minimum, the rules file must identify the date and amount fields. | ||||||
| fields.  It may also be necessary to specify the date format, and the | It's often necessary to specify the date format, and the number of | ||||||
| number of header lines to skip.  Eg: | header lines to skip, also.  Eg: | ||||||
| 
 | 
 | ||||||
| fields date, _, _, amount | fields date, _, _, amount | ||||||
| date-format  %d/%m/%Y | date-format  %d/%m/%Y | ||||||
| @ -63,6 +63,7 @@ account1    assets:amazon | |||||||
| amount      -%amount | amount      -%amount | ||||||
| 
 | 
 | ||||||
|    For more examples, see Convert CSV files. |    For more examples, see Convert CSV files. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * CSV RULES:: | * CSV RULES:: | ||||||
| @ -76,6 +77,7 @@ File: hledger_csv.info,  Node: CSV RULES,  Next: CSV TIPS,  Prev: Top,  Up: Top | |||||||
| 
 | 
 | ||||||
| The following seven kinds of rule can appear in the rules file, in any | The following seven kinds of rule can appear in the rules file, in any | ||||||
| order.  Blank lines and lines beginning with '#' or ';' are ignored. | order.  Blank lines and lines beginning with '#' or ';' are ignored. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * skip:: | * skip:: | ||||||
| @ -137,8 +139,8 @@ File: hledger_csv.info,  Node: field list,  Next: field assignment,  Prev: date- | |||||||
| whitespace; uninteresting names may be left blank), and (b) assigns them | whitespace; uninteresting names may be left blank), and (b) assigns them | ||||||
| to journal entry fields if you use any of these standard field names: | to journal entry fields if you use any of these standard field names: | ||||||
| 'date', 'date2', 'status', 'code', 'description', 'comment', 'account1', | 'date', 'date2', 'status', 'code', 'description', 'comment', 'account1', | ||||||
| 'account2', 'amount', 'amount-in', 'amount-out', 'currency', 'balance'. | 'account2', 'amount', 'amount-in', 'amount-out', 'currency', 'balance', | ||||||
| Eg: | 'balance1', 'balance2'.  Eg: | ||||||
| 
 | 
 | ||||||
| # use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount, | # use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount, | ||||||
| # and give the 7th and 8th fields meaningful names for later reference: | # and give the 7th and 8th fields meaningful names for later reference: | ||||||
| @ -244,7 +246,7 @@ File: hledger_csv.info,  Node: CSV TIPS,  Prev: CSV RULES,  Up: Top | |||||||
| * CSV ordering:: | * CSV ordering:: | ||||||
| * CSV accounts:: | * CSV accounts:: | ||||||
| * CSV amounts:: | * CSV amounts:: | ||||||
| * CSV balance assertions:: | * CSV balance assertions/assignments:: | ||||||
| * Reading multiple CSV files:: | * Reading multiple CSV files:: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| @ -269,42 +271,53 @@ two postings.  It's conventional and recommended to use 'account1' for | |||||||
| the account whose CSV we are reading. | the account whose CSV we are reading. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_csv.info,  Node: CSV amounts,  Next: CSV balance assertions,  Prev: CSV accounts,  Up: CSV TIPS | File: hledger_csv.info,  Node: CSV amounts,  Next: CSV balance assertions/assignments,  Prev: CSV accounts,  Up: CSV TIPS | ||||||
| 
 | 
 | ||||||
| 2.3 CSV amounts | 2.3 CSV amounts | ||||||
| =============== | =============== | ||||||
| 
 | 
 | ||||||
| The 'amount' field sets the amount of the 'account1' posting. | A transaction amount must be set, in one of these ways: | ||||||
| 
 | 
 | ||||||
|    If the CSV has debit/credit amounts in separate fields, assign to the |    * with an 'amount' field assignment, which sets the first posting's | ||||||
| 'amount-in' and 'amount-out' pseudo fields instead.  (Whichever one has |      amount | ||||||
| a value will be used, with appropriate sign.  If both contain a value, |  | ||||||
| it may not work so well.) |  | ||||||
| 
 | 
 | ||||||
|    If an amount value is parenthesised, it will be de-parenthesised and |    * (When the CSV has debit and credit amounts in separate fields:) | ||||||
| sign-flipped. |      with field assignments for the 'amount-in' and 'amount-out' pseudo | ||||||
|  |      fields (both of them).  Whichever one has a value will be used, | ||||||
|  |      with appropriate sign.  If both contain a value, it might not work | ||||||
|  |      so well. | ||||||
| 
 | 
 | ||||||
|    If an amount value begins with a double minus sign, those will cancel |    * or implicitly by means of a balance assignment (see below). | ||||||
| out and be removed. |  | ||||||
| 
 | 
 | ||||||
|    If the CSV has the currency symbol in a separate field, assign that |    There is some special handling for sign in amounts: | ||||||
| to the 'currency' pseudo field to have it prepended to the amount.  Or, | 
 | ||||||
| you can use a field assignment to 'amount' that interpolates both CSV |    * If an amount value is parenthesised, it will be de-parenthesised | ||||||
| fields (giving more control, eg to put the currency symbol on the |      and sign-flipped. | ||||||
| right). |    * If an amount value begins with a double minus sign, those will | ||||||
|  |      cancel out and be removed. | ||||||
|  | 
 | ||||||
|  |    If the currency/commodity symbol is provided as a separate CSV field, | ||||||
|  | assign it to the 'currency' pseudo field; the symbol will be prepended | ||||||
|  | to the amount (TODO: when there is an amount).  Or, you can use an | ||||||
|  | 'amount' field assignment for more control, eg: | ||||||
|  | 
 | ||||||
|  | fields date,description,currency,amount | ||||||
|  | amount %amount %currency | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_csv.info,  Node: CSV balance assertions,  Next: Reading multiple CSV files,  Prev: CSV amounts,  Up: CSV TIPS | File: hledger_csv.info,  Node: CSV balance assertions/assignments,  Next: Reading multiple CSV files,  Prev: CSV amounts,  Up: CSV TIPS | ||||||
| 
 | 
 | ||||||
| 2.4 CSV balance assertions | 2.4 CSV balance assertions/assignments | ||||||
| ========================== | ====================================== | ||||||
| 
 | 
 | ||||||
| If the CSV includes a running balance, you can assign that to the | If the CSV includes a running balance, you can assign that to one of the | ||||||
| 'balance' pseudo field; whenever the running balance value is non-empty, | pseudo fields 'balance' (or 'balance1') or 'balance2'.  This will | ||||||
| it will be asserted as the balance after the 'account1' posting. | generate a balance assertion (or if the amount is left empty, a balance | ||||||
|  | assignment), on the first or second posting, whenever the running | ||||||
|  | balance field is non-empty.  (TODO: #1000) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_csv.info,  Node: Reading multiple CSV files,  Prev: CSV balance assertions,  Up: CSV TIPS | File: hledger_csv.info,  Node: Reading multiple CSV files,  Prev: CSV balance assertions/assignments,  Up: CSV TIPS | ||||||
| 
 | 
 | ||||||
| 2.5 Reading multiple CSV files | 2.5 Reading multiple CSV files | ||||||
| ============================== | ============================== | ||||||
| @ -317,33 +330,33 @@ one rules file will be used for all the CSV files being read. | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top72 | Node: Top72 | ||||||
| Node: CSV RULES2163 | Node: CSV RULES2167 | ||||||
| Ref: #csv-rules2271 | Ref: #csv-rules2275 | ||||||
| Node: skip2533 | Node: skip2538 | ||||||
| Ref: #skip2627 | Ref: #skip2632 | ||||||
| Node: date-format2799 | Node: date-format2804 | ||||||
| Ref: #date-format2926 | Ref: #date-format2931 | ||||||
| Node: field list3476 | Node: field list3481 | ||||||
| Ref: #field-list3613 | Ref: #field-list3618 | ||||||
| Node: field assignment4318 | Node: field assignment4348 | ||||||
| Ref: #field-assignment4473 | Ref: #field-assignment4503 | ||||||
| Node: conditional block4977 | Node: conditional block5007 | ||||||
| Ref: #conditional-block5131 | Ref: #conditional-block5161 | ||||||
| Node: include6027 | Node: include6057 | ||||||
| Ref: #include6157 | Ref: #include6187 | ||||||
| Node: newest-first6388 | Node: newest-first6418 | ||||||
| Ref: #newest-first6502 | Ref: #newest-first6532 | ||||||
| Node: CSV TIPS6913 | Node: CSV TIPS6943 | ||||||
| Ref: #csv-tips7007 | Ref: #csv-tips7037 | ||||||
| Node: CSV ordering7125 | Node: CSV ordering7167 | ||||||
| Ref: #csv-ordering7243 | Ref: #csv-ordering7285 | ||||||
| Node: CSV accounts7424 | Node: CSV accounts7466 | ||||||
| Ref: #csv-accounts7562 | Ref: #csv-accounts7604 | ||||||
| Node: CSV amounts7816 | Node: CSV amounts7858 | ||||||
| Ref: #csv-amounts7962 | Ref: #csv-amounts8016 | ||||||
| Node: CSV balance assertions8737 | Node: CSV balance assertions/assignments9096 | ||||||
| Ref: #csv-balance-assertions8919 | Ref: #csv-balance-assertionsassignments9314 | ||||||
| Node: Reading multiple CSV files9124 | Node: Reading multiple CSV files9635 | ||||||
| Ref: #reading-multiple-csv-files9294 | Ref: #reading-multiple-csv-files9817 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -29,8 +29,8 @@ DESCRIPTION | |||||||
|        you'll need to adjust. |        you'll need to adjust. | ||||||
| 
 | 
 | ||||||
|        At minimum, the rules file must identify the date  and  amount  fields. |        At minimum, the rules file must identify the date  and  amount  fields. | ||||||
|        It  may also be necessary to specify the date format, and the number of |        It's  often  necessary  to  specify  the date format, and the number of | ||||||
|        header lines to skip.  Eg: |        header lines to skip, also.  Eg: | ||||||
| 
 | 
 | ||||||
|               fields date, _, _, amount |               fields date, _, _, amount | ||||||
|               date-format  %d/%m/%Y |               date-format  %d/%m/%Y | ||||||
| @ -83,10 +83,10 @@ CSV RULES | |||||||
|    date-format |    date-format | ||||||
|        date-formatDATEFMT |        date-formatDATEFMT | ||||||
| 
 | 
 | ||||||
|        When your CSV  date  fields  are  not  formatted  like  YYYY/MM/DD  (or |        When your CSV date fields are not formatted like YYYY/MM/DD  (or  YYYY- | ||||||
|        YYYY-MM-DD  or YYYY.MM.DD), you'll need to specify the format.  DATEFMT |        MM-DD  or YYYY.MM.DD), you'll need to specify the format.  DATEFMT is a | ||||||
|        is a strptime-like date parsing pattern,  which  must  parse  the  date |        strptime-like date parsing pattern, which must  parse  the  date  field | ||||||
|        field values completely.  Examples: |        values completely.  Examples: | ||||||
| 
 | 
 | ||||||
|               # for dates like "11/06/2013": |               # for dates like "11/06/2013": | ||||||
|               date-format %m/%d/%Y |               date-format %m/%d/%Y | ||||||
| @ -107,7 +107,8 @@ CSV RULES | |||||||
|        space; uninteresting names may be left blank), and (b) assigns them  to |        space; uninteresting names may be left blank), and (b) assigns them  to | ||||||
|        journal  entry  fields  if  you  use any of these standard field names: |        journal  entry  fields  if  you  use any of these standard field names: | ||||||
|        date, date2, status, code, description,  comment,  account1,  account2, |        date, date2, status, code, description,  comment,  account1,  account2, | ||||||
|        amount, amount-in, amount-out, currency, balance.  Eg: |        amount,  amount-in,  amount-out, currency, balance, balance1, balance2. | ||||||
|  |        Eg: | ||||||
| 
 | 
 | ||||||
|               # use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount, |               # use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount, | ||||||
|               # and give the 7th and 8th fields meaningful names for later reference: |               # and give the 7th and 8th fields meaningful names for later reference: | ||||||
| @ -120,10 +121,9 @@ CSV RULES | |||||||
|    field assignment |    field assignment | ||||||
|        ENTRYFIELDNAME FIELDVALUE |        ENTRYFIELDNAME FIELDVALUE | ||||||
| 
 | 
 | ||||||
|        This  sets  a  journal entry field (one of the standard names above) to |        This sets a journal entry field (one of the standard  names  above)  to | ||||||
|        the given text value, which can include CSV field  values  interpolated |        the  given  text value, which can include CSV field values interpolated | ||||||
|        by name (%CSVFIELDNAME) or 1-based position (%N). |        by name (%CSVFIELDNAME) or 1-based position (%N).  Eg: | ||||||
|         Eg: |  | ||||||
| 
 | 
 | ||||||
|               # set the amount to the 4th CSV field with "USD " prepended |               # set the amount to the 4th CSV field with "USD " prepended | ||||||
|               amount USD %4 |               amount USD %4 | ||||||
| @ -131,7 +131,7 @@ CSV RULES | |||||||
|               # combine three fields to make a comment (containing two tags) |               # combine three fields to make a comment (containing two tags) | ||||||
|               comment note: %somefield - %anotherfield, date: %1 |               comment note: %somefield - %anotherfield, date: %1 | ||||||
| 
 | 
 | ||||||
|        Field  assignments  can  be  used  instead of or in addition to a field |        Field assignments can be used instead of or  in  addition  to  a  field | ||||||
|        list. |        list. | ||||||
| 
 | 
 | ||||||
|    conditional block |    conditional block | ||||||
| @ -143,12 +143,12 @@ CSV RULES | |||||||
|        PATTERN... |        PATTERN... | ||||||
|            FIELDASSIGNMENTS... |            FIELDASSIGNMENTS... | ||||||
| 
 | 
 | ||||||
|        This applies one or more field assignments, only to those  CSV  records |        This  applies  one or more field assignments, only to those CSV records | ||||||
|        matched by one of the PATTERNs.  The patterns are case-insensitive reg- |        matched by one of the PATTERNs.  The patterns are case-insensitive reg- | ||||||
|        ular expressions which match anywhere within the whole CSV record (it's |        ular expressions which match anywhere within the whole CSV record (it's | ||||||
|        not  yet  possible  to  match within a specific field).  When there are |        not yet possible to match within a specific  field).   When  there  are | ||||||
|        multiple patterns they can be written on  separate  lines,  unindented. |        multiple  patterns  they  can be written on separate lines, unindented. | ||||||
|        The  field  assignments  are on separate lines indented by at least one |        The field assignments are on separate lines indented by  at  least  one | ||||||
|        space.  Examples: |        space.  Examples: | ||||||
| 
 | 
 | ||||||
|               # if the CSV record contains "groceries", set account2 to "expenses:groceries" |               # if the CSV record contains "groceries", set account2 to "expenses:groceries" | ||||||
| @ -175,59 +175,71 @@ CSV RULES | |||||||
|    newest-first |    newest-first | ||||||
|        newest-first |        newest-first | ||||||
| 
 | 
 | ||||||
|        Consider adding this rule if all of the following are true:  you  might |        Consider  adding  this rule if all of the following are true: you might | ||||||
|        be  processing  just  one  day of data, your CSV records are in reverse |        be processing just one day of data, your CSV  records  are  in  reverse | ||||||
|        chronological order (newest first), and you care about  preserving  the |        chronological  order  (newest first), and you care about preserving the | ||||||
|        order  of  same-day  transactions.   It  usually  isn't needed, because |        order of same-day  transactions.   It  usually  isn't  needed,  because | ||||||
|        hledger autodetects the CSV order, but when all CSV  records  have  the |        hledger  autodetects  the  CSV order, but when all CSV records have the | ||||||
|        same date it will assume they are oldest first. |        same date it will assume they are oldest first. | ||||||
| 
 | 
 | ||||||
| CSV TIPS | CSV TIPS | ||||||
|    CSV ordering |    CSV ordering | ||||||
|        The  generated  journal  entries  will be sorted by date.  The order of |        The generated journal entries will be sorted by  date.   The  order  of | ||||||
|        same-day entries will be preserved (except in the  special  case  where |        same-day  entries  will  be preserved (except in the special case where | ||||||
|        you might need newest-first, see above). |        you might need newest-first, see above). | ||||||
| 
 | 
 | ||||||
|    CSV accounts |    CSV accounts | ||||||
|        Each  journal  entry  will  have two postings, to account1 and account2 |        Each journal entry will have two postings,  to  account1  and  account2 | ||||||
|        respectively.  It's not yet possible to generate entries with more than |        respectively.  It's not yet possible to generate entries with more than | ||||||
|        two  postings.   It's  conventional and recommended to use account1 for |        two postings.  It's conventional and recommended to  use  account1  for | ||||||
|        the account whose CSV we are reading. |        the account whose CSV we are reading. | ||||||
| 
 | 
 | ||||||
|    CSV amounts |    CSV amounts | ||||||
|        The amount field sets the amount of the account1 posting. |        A transaction amount must be set, in one of these ways: | ||||||
| 
 | 
 | ||||||
|        If the CSV has debit/credit amounts in separate fields, assign  to  the |        o with  an  amount  field  assignment,  which  sets the first posting's | ||||||
|        amount-in  and  amount-out pseudo fields instead.  (Whichever one has a |          amount | ||||||
|        value will be used, with appropriate sign.  If both contain a value, it |  | ||||||
|        may not work so well.) |  | ||||||
| 
 | 
 | ||||||
|        If  an  amount  value is parenthesised, it will be de-parenthesised and |        o (When the CSV has debit and credit amounts in separate fields:) | ||||||
|        sign-flipped. |        with field assignments for the amount-in and amount-out  pseudo  fields | ||||||
|  |        (both of them).  Whichever one has a value will be used, with appropri- | ||||||
|  |        ate sign.  If both contain a value, it might not work so well. | ||||||
| 
 | 
 | ||||||
|        If an amount value begins with a double minus sign, those  will  cancel |        o or implicitly by means of a balance assignment (see below). | ||||||
|        out and be removed. |  | ||||||
| 
 | 
 | ||||||
|        If  the CSV has the currency symbol in a separate field, assign that to |        There is some special handling for sign in amounts: | ||||||
|        the currency pseudo field to have it prepended to the amount.  Or,  you |  | ||||||
|        can  use a field assignment to amount that interpolates both CSV fields |  | ||||||
|        (giving more control, eg to put the currency symbol on the right). |  | ||||||
| 
 | 
 | ||||||
|    CSV balance assertions |        o If an amount value is parenthesised, it will be de-parenthesised  and | ||||||
|        If the CSV includes a running balance, you can assign that to the  bal- |          sign-flipped. | ||||||
|        ance  pseudo field; whenever the running balance value is non-empty, it | 
 | ||||||
|        will be asserted as the balance after the account1 posting. |        o If an amount value begins with a double minus sign, those will cancel | ||||||
|  |          out and be removed. | ||||||
|  | 
 | ||||||
|  |        If the currency/commodity symbol is provided as a separate  CSV  field, | ||||||
|  |        assign it to the currency pseudo field; the symbol will be prepended to | ||||||
|  |        the amount (TODO: when there is an amount).  Or, you can use an  amount | ||||||
|  |        field assignment for more control, eg: | ||||||
|  | 
 | ||||||
|  |               fields date,description,currency,amount | ||||||
|  |               amount %amount %currency | ||||||
|  | 
 | ||||||
|  |    CSV balance assertions/assignments | ||||||
|  |        If  the  CSV  includes a running balance, you can assign that to one of | ||||||
|  |        the pseudo fields balance (or balance1) or balance2.  This will  gener- | ||||||
|  |        ate  a  balance  assertion  (or  if the amount is left empty, a balance | ||||||
|  |        assignment), on the first or second posting, whenever the running  bal- | ||||||
|  |        ance field is non-empty.  (TODO: #1000) | ||||||
| 
 | 
 | ||||||
|    Reading multiple CSV files |    Reading multiple CSV files | ||||||
|        You can read multiple CSV files at once using multiple -f arguments  on |        You  can read multiple CSV files at once using multiple -f arguments on | ||||||
|        the  command  line,  and  hledger will look for a correspondingly-named |        the command line, and hledger will  look  for  a  correspondingly-named | ||||||
|        rules file for each.  Note if you use the --rules-file option, this one |        rules file for each.  Note if you use the --rules-file option, this one | ||||||
|        rules file will be used for all the CSV files being read. |        rules file will be used for all the CSV files being read. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| REPORTING BUGS | REPORTING BUGS | ||||||
|        Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel |        Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel | ||||||
|        or hledger mail list) |        or hledger mail list) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -241,7 +253,7 @@ COPYRIGHT | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| SEE ALSO | SEE ALSO | ||||||
|        hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1), |        hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1), | ||||||
|        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- |        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- | ||||||
|        dot(5), ledger(1) |        dot(5), ledger(1) | ||||||
| 
 | 
 | ||||||
| @ -249,4 +261,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.14                      March 2019                    hledger_csv(5) | hledger 1.14.99                   March 2019                    hledger_csv(5) | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -4,8 +4,8 @@ stdin. | |||||||
|  |  | ||||||
| File: hledger_journal.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir) | File: hledger_journal.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir) | ||||||
| 
 | 
 | ||||||
| hledger_journal(5) hledger 1.14 | hledger_journal(5) hledger 1.14.99 | ||||||
| ******************************* | ********************************** | ||||||
| 
 | 
 | ||||||
| hledger's usual data source is a plain text file containing journal | hledger's usual data source is a plain text file containing journal | ||||||
| entries in hledger journal format.  This file represents a standard | entries in hledger journal format.  This file represents a standard | ||||||
| @ -82,7 +82,7 @@ File: hledger_journal.info,  Node: FILE FORMAT,  Next: EDITOR SUPPORT,  Prev: To | |||||||
| * Tags:: | * Tags:: | ||||||
| * Directives:: | * Directives:: | ||||||
| * Periodic transactions:: | * Periodic transactions:: | ||||||
| * Transaction modifiers:: | * Auto postings / transaction modifiers:: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.info,  Node: Transactions,  Next: Postings,  Up: FILE FORMAT | File: hledger_journal.info,  Node: Transactions,  Next: Postings,  Up: FILE FORMAT | ||||||
| @ -296,6 +296,7 @@ and status mark (or until a comment begins).  Sometimes called the | |||||||
| "narration" in traditional bookkeeping, it can be used for whatever you | "narration" in traditional bookkeeping, it can be used for whatever you | ||||||
| wish, or left blank.  Transaction descriptions can be queried, unlike | wish, or left blank.  Transaction descriptions can be queried, unlike | ||||||
| comments. | comments. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Payee and note:: | * Payee and note:: | ||||||
| @ -467,6 +468,7 @@ can protect you from, eg, inadvertently disrupting reconciled balances | |||||||
| while cleaning up old entries.  You can disable them temporarily with | while cleaning up old entries.  You can disable them temporarily with | ||||||
| the '-I/--ignore-assertions' flag, which can be useful for | the '-I/--ignore-assertions' flag, which can be useful for | ||||||
| troubleshooting or for reading Ledger files. | troubleshooting or for reading Ledger files. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Assertions and ordering:: | * Assertions and ordering:: | ||||||
| @ -655,6 +657,7 @@ of the commodity to that account since the last balance assertion or | |||||||
| assignment).  Note that using balance assignments makes your journal a | assignment).  Note that using balance assignments makes your journal a | ||||||
| little less explicit; to know the exact amount posted, you have to run | little less explicit; to know the exact amount posted, you have to run | ||||||
| hledger or do the calculations yourself, instead of just reading it. | hledger or do the calculations yourself, instead of just reading it. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Balance assignments and prices:: | * Balance assignments and prices:: | ||||||
| @ -914,6 +917,7 @@ typically last only until the end of their defining file.  This provides | |||||||
| more simplicity and predictability, eg reports are not changed by | more simplicity and predictability, eg reports are not changed by | ||||||
| writing file options in a different order.  It can be surprising at | writing file options in a different order.  It can be surprising at | ||||||
| times though. | times though. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Comment blocks:: | * Comment blocks:: | ||||||
| @ -1248,6 +1252,7 @@ They do not affect account names being entered via hledger add or | |||||||
| hledger-web. | hledger-web. | ||||||
| 
 | 
 | ||||||
|    See also Cookbook: Rewrite account names. |    See also Cookbook: Rewrite account names. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Basic aliases:: | * Basic aliases:: | ||||||
| @ -1372,7 +1377,7 @@ If account aliases are present, they are applied after the default | |||||||
| parent account. | parent account. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.info,  Node: Periodic transactions,  Next: Transaction modifiers,  Prev: Directives,  Up: FILE FORMAT | File: hledger_journal.info,  Node: Periodic transactions,  Next: Auto postings / transaction modifiers,  Prev: Directives,  Up: FILE FORMAT | ||||||
| 
 | 
 | ||||||
| 1.15 Periodic transactions | 1.15 Periodic transactions | ||||||
| ========================== | ========================== | ||||||
| @ -1398,6 +1403,7 @@ date must fall on a natural boundary of the interval.  Eg 'monthly from | |||||||
| expression can work (useful or not).  They will be relative to today's | expression can work (useful or not).  They will be relative to today's | ||||||
| date, unless a Y default year directive is in effect, in which case they | date, unless a Y default year directive is in effect, in which case they | ||||||
| will be relative to Y/1/1. | will be relative to Y/1/1. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Two spaces after the period expression:: | * Two spaces after the period expression:: | ||||||
| @ -1482,29 +1488,29 @@ compared in budget reports. | |||||||
| and Forecasting. | and Forecasting. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.info,  Node: Transaction modifiers,  Prev: Periodic transactions,  Up: FILE FORMAT | File: hledger_journal.info,  Node: Auto postings / transaction modifiers,  Prev: Periodic transactions,  Up: FILE FORMAT | ||||||
| 
 | 
 | ||||||
| 1.16 Transaction modifiers | 1.16 Auto postings / transaction modifiers | ||||||
| ========================== | ========================================== | ||||||
| 
 | 
 | ||||||
| Transaction modifier rules describe changes that should be applied | Transaction modifier rules describe changes to be applied automatically | ||||||
| automatically to certain transactions.  They can be enabled by using the | to certain matched transactions.  Currently just one kind of change is | ||||||
| '--auto' flag.  Currently, just one kind of change is possible: adding | possible - adding extra postings, which we call "automated postings" or | ||||||
| extra postings.  These rule-generated postings are known as "automated | just "auto postings".  These rules become active when you use the | ||||||
| postings" or "auto postings". | '--auto' flag. | ||||||
| 
 | 
 | ||||||
|    A transaction modifier rule looks quite like a normal transaction, |    A transaction modifier, AKA auto posting rule, looks much like a | ||||||
| except the first line is an equals sign followed by a query that matches | normal transaction except the first line is an equals sign followed by a | ||||||
| certain postings (mnemonic: '=' suggests matching).  And each "posting" | query that matches certain postings (mnemonic: '=' suggests matching). | ||||||
| is actually a posting-generating rule: | And each "posting" is actually a posting-generating rule: | ||||||
| 
 | 
 | ||||||
| = QUERY | = QUERY | ||||||
|     ACCT  AMT |     ACCT  AMT | ||||||
|     ACCT  [AMT] |     ACCT  [AMT] | ||||||
|     ... |     ... | ||||||
| 
 | 
 | ||||||
|    These posting rules look like normal postings, except the amount can |    These posting-generating rules look like normal postings, except the | ||||||
| be: | amount can be: | ||||||
| 
 | 
 | ||||||
|    * a normal amount with a commodity symbol, eg '$2'.  This will be |    * a normal amount with a commodity symbol, eg '$2'.  This will be | ||||||
|      used as-is. |      used as-is. | ||||||
| @ -1517,6 +1523,10 @@ be: | |||||||
|      and symbol S). The matched posting's amount will be multiplied by |      and symbol S). The matched posting's amount will be multiplied by | ||||||
|      N, and its commodity symbol will be replaced with S. |      N, and its commodity symbol will be replaced with S. | ||||||
| 
 | 
 | ||||||
|  |    These rules have global effect - a rule appearing anywhere in your | ||||||
|  | data can potentially affect any transaction, including transactions | ||||||
|  | recorded above it or in another file. | ||||||
|  | 
 | ||||||
|    Some examples: |    Some examples: | ||||||
| 
 | 
 | ||||||
| ; every time I buy food, schedule a dollar donation | ; every time I buy food, schedule a dollar donation | ||||||
| @ -1553,7 +1563,7 @@ $ hledger print --auto | |||||||
| * Auto postings and transaction balancing / inferred amounts / balance assertions:: | * Auto postings and transaction balancing / inferred amounts / balance assertions:: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_journal.info,  Node: Auto postings and transaction balancing / inferred amounts / balance assertions,  Up: Transaction modifiers | File: hledger_journal.info,  Node: Auto postings and transaction balancing / inferred amounts / balance assertions,  Up: Auto postings / transaction modifiers | ||||||
| 
 | 
 | ||||||
| 1.16.1 Auto postings and transaction balancing / inferred amounts / | 1.16.1 Auto postings and transaction balancing / inferred amounts / | ||||||
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ||||||
| @ -1585,109 +1595,109 @@ See the [[Cookbook]] at hledger.org for the latest information. | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top76 | Node: Top76 | ||||||
| Node: FILE FORMAT2372 | Node: FILE FORMAT2378 | ||||||
| Ref: #file-format2496 | Ref: #file-format2502 | ||||||
| Node: Transactions2783 | Node: Transactions2805 | ||||||
| Ref: #transactions2904 | Ref: #transactions2926 | ||||||
| Node: Postings3588 | Node: Postings3610 | ||||||
| Ref: #postings3715 | Ref: #postings3737 | ||||||
| Node: Dates4710 | Node: Dates4732 | ||||||
| Ref: #dates4825 | Ref: #dates4847 | ||||||
| Node: Simple dates4890 | Node: Simple dates4912 | ||||||
| Ref: #simple-dates5016 | Ref: #simple-dates5038 | ||||||
| Node: Secondary dates5382 | Node: Secondary dates5404 | ||||||
| Ref: #secondary-dates5536 | Ref: #secondary-dates5558 | ||||||
| Node: Posting dates7099 | Node: Posting dates7121 | ||||||
| Ref: #posting-dates7228 | Ref: #posting-dates7250 | ||||||
| Node: Status8602 | Node: Status8624 | ||||||
| Ref: #status8722 | Ref: #status8744 | ||||||
| Node: Description10430 | Node: Description10452 | ||||||
| Ref: #description10568 | Ref: #description10590 | ||||||
| Node: Payee and note10887 | Node: Payee and note10910 | ||||||
| Ref: #payee-and-note11001 | Ref: #payee-and-note11024 | ||||||
| Node: Account names11243 | Node: Account names11266 | ||||||
| Ref: #account-names11386 | Ref: #account-names11409 | ||||||
| Node: Amounts11873 | Node: Amounts11896 | ||||||
| Ref: #amounts12009 | Ref: #amounts12032 | ||||||
| Node: Virtual Postings15026 | Node: Virtual Postings15049 | ||||||
| Ref: #virtual-postings15185 | Ref: #virtual-postings15208 | ||||||
| Node: Balance Assertions16405 | Node: Balance Assertions16428 | ||||||
| Ref: #balance-assertions16580 | Ref: #balance-assertions16603 | ||||||
| Node: Assertions and ordering17538 | Node: Assertions and ordering17562 | ||||||
| Ref: #assertions-and-ordering17724 | Ref: #assertions-and-ordering17748 | ||||||
| Node: Assertions and included files18424 | Node: Assertions and included files18448 | ||||||
| Ref: #assertions-and-included-files18665 | Ref: #assertions-and-included-files18689 | ||||||
| Node: Assertions and multiple -f options18998 | Node: Assertions and multiple -f options19022 | ||||||
| Ref: #assertions-and-multiple--f-options19252 | Ref: #assertions-and-multiple--f-options19276 | ||||||
| Node: Assertions and commodities19384 | Node: Assertions and commodities19408 | ||||||
| Ref: #assertions-and-commodities19614 | Ref: #assertions-and-commodities19638 | ||||||
| Node: Assertions and prices20770 | Node: Assertions and prices20794 | ||||||
| Ref: #assertions-and-prices20982 | Ref: #assertions-and-prices21006 | ||||||
| Node: Assertions and subaccounts21422 | Node: Assertions and subaccounts21446 | ||||||
| Ref: #assertions-and-subaccounts21649 | Ref: #assertions-and-subaccounts21673 | ||||||
| Node: Assertions and virtual postings21973 | Node: Assertions and virtual postings21997 | ||||||
| Ref: #assertions-and-virtual-postings22213 | Ref: #assertions-and-virtual-postings22237 | ||||||
| Node: Assertions and precision22355 | Node: Assertions and precision22379 | ||||||
| Ref: #assertions-and-precision22546 | Ref: #assertions-and-precision22570 | ||||||
| Node: Balance Assignments22813 | Node: Balance Assignments22837 | ||||||
| Ref: #balance-assignments22994 | Ref: #balance-assignments23018 | ||||||
| Node: Balance assignments and prices24158 | Node: Balance assignments and prices24183 | ||||||
| Ref: #balance-assignments-and-prices24330 | Ref: #balance-assignments-and-prices24355 | ||||||
| Node: Transaction prices24554 | Node: Transaction prices24579 | ||||||
| Ref: #transaction-prices24723 | Ref: #transaction-prices24748 | ||||||
| Node: Comments26991 | Node: Comments27016 | ||||||
| Ref: #comments27125 | Ref: #comments27150 | ||||||
| Node: Tags28295 | Node: Tags28320 | ||||||
| Ref: #tags28413 | Ref: #tags28438 | ||||||
| Node: Directives29815 | Node: Directives29840 | ||||||
| Ref: #directives29958 | Ref: #directives29983 | ||||||
| Node: Comment blocks35565 | Node: Comment blocks35591 | ||||||
| Ref: #comment-blocks35710 | Ref: #comment-blocks35736 | ||||||
| Node: Including other files35886 | Node: Including other files35912 | ||||||
| Ref: #including-other-files36066 | Ref: #including-other-files36092 | ||||||
| Node: Default year36474 | Node: Default year36500 | ||||||
| Ref: #default-year36643 | Ref: #default-year36669 | ||||||
| Node: Declaring commodities37066 | Node: Declaring commodities37092 | ||||||
| Ref: #declaring-commodities37249 | Ref: #declaring-commodities37275 | ||||||
| Node: Default commodity38476 | Node: Default commodity38502 | ||||||
| Ref: #default-commodity38652 | Ref: #default-commodity38678 | ||||||
| Node: Market prices39288 | Node: Market prices39314 | ||||||
| Ref: #market-prices39453 | Ref: #market-prices39479 | ||||||
| Node: Declaring accounts40294 | Node: Declaring accounts40320 | ||||||
| Ref: #declaring-accounts40470 | Ref: #declaring-accounts40496 | ||||||
| Node: Account comments41395 | Node: Account comments41421 | ||||||
| Ref: #account-comments41558 | Ref: #account-comments41584 | ||||||
| Node: Account subdirectives41953 | Node: Account subdirectives41979 | ||||||
| Ref: #account-subdirectives42148 | Ref: #account-subdirectives42174 | ||||||
| Node: Account types42461 | Node: Account types42487 | ||||||
| Ref: #account-types42645 | Ref: #account-types42671 | ||||||
| Node: Account display order44289 | Node: Account display order44315 | ||||||
| Ref: #account-display-order44459 | Ref: #account-display-order44485 | ||||||
| Node: Rewriting accounts45588 | Node: Rewriting accounts45614 | ||||||
| Ref: #rewriting-accounts45773 | Ref: #rewriting-accounts45799 | ||||||
| Node: Basic aliases46507 | Node: Basic aliases46534 | ||||||
| Ref: #basic-aliases46653 | Ref: #basic-aliases46680 | ||||||
| Node: Regex aliases47357 | Node: Regex aliases47384 | ||||||
| Ref: #regex-aliases47528 | Ref: #regex-aliases47555 | ||||||
| Node: Multiple aliases48246 | Node: Multiple aliases48273 | ||||||
| Ref: #multiple-aliases48421 | Ref: #multiple-aliases48448 | ||||||
| Node: end aliases48919 | Node: end aliases48946 | ||||||
| Ref: #end-aliases49066 | Ref: #end-aliases49093 | ||||||
| Node: Default parent account49167 | Node: Default parent account49194 | ||||||
| Ref: #default-parent-account49333 | Ref: #default-parent-account49360 | ||||||
| Node: Periodic transactions50217 | Node: Periodic transactions50244 | ||||||
| Ref: #periodic-transactions50399 | Ref: #periodic-transactions50442 | ||||||
| Node: Two spaces after the period expression51524 | Node: Two spaces after the period expression51568 | ||||||
| Ref: #two-spaces-after-the-period-expression51769 | Ref: #two-spaces-after-the-period-expression51813 | ||||||
| Node: Forecasting with periodic transactions52254 | Node: Forecasting with periodic transactions52298 | ||||||
| Ref: #forecasting-with-periodic-transactions52544 | Ref: #forecasting-with-periodic-transactions52588 | ||||||
| Node: Budgeting with periodic transactions54231 | Node: Budgeting with periodic transactions54275 | ||||||
| Ref: #budgeting-with-periodic-transactions54470 | Ref: #budgeting-with-periodic-transactions54514 | ||||||
| Node: Transaction modifiers54929 | Node: Auto postings / transaction modifiers54973 | ||||||
| Ref: #transaction-modifiers55092 | Ref: #auto-postings-transaction-modifiers55184 | ||||||
| Node: Auto postings and transaction balancing / inferred amounts / balance assertions57076 | Node: Auto postings and transaction balancing / inferred amounts / balance assertions57356 | ||||||
| Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions57377 | Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions57673 | ||||||
| Node: EDITOR SUPPORT57755 | Node: EDITOR SUPPORT58051 | ||||||
| Ref: #editor-support57873 | Ref: #editor-support58169 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,74 +1,74 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger_timeclock" "5" "March 2019" "hledger 1.14" "hledger User Manuals" | .TH "hledger_timeclock" "5" "March 2019" "hledger 1.14.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .SH NAME | .SH NAME | ||||||
| .PP | .PP | ||||||
| Timeclock \- the time logging format of timeclock.el, as read by hledger | Timeclock - the time logging format of timeclock.el, as read by hledger | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| .PP | .PP | ||||||
| hledger can read timeclock files. | hledger can read timeclock files. | ||||||
| As with Ledger, these are (a subset of) timeclock.el\[aq]s format, | As with Ledger, these are (a subset of) timeclock.el\[aq]s format, | ||||||
| containing clock\-in and clock\-out entries as in the example below. | containing clock-in and clock-out entries as in the example below. | ||||||
| The date is a simple date. | The date is a simple date. | ||||||
| The time format is HH:MM[:SS][+\-ZZZZ]. | The time format is HH:MM[:SS][+-ZZZZ]. | ||||||
| Seconds and timezone are optional. | Seconds and timezone are optional. | ||||||
| The timezone, if present, must be four digits and is ignored (currently | The timezone, if present, must be four digits and is ignored (currently | ||||||
| the time is always interpreted as a local time). | the time is always interpreted as a local time). | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| i\ 2015/03/30\ 09:00:00\ some:account\ name\ \ optional\ description\ after\ two\ spaces | i 2015/03/30 09:00:00 some:account name  optional description after two spaces | ||||||
| o\ 2015/03/30\ 09:20:00 | o 2015/03/30 09:20:00 | ||||||
| i\ 2015/03/31\ 22:21:45\ another\ account | i 2015/03/31 22:21:45 another account | ||||||
| o\ 2015/04/01\ 02:00:34 | o 2015/04/01 02:00:34 | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| hledger treats each clock\-in/clock\-out pair as a transaction posting | hledger treats each clock-in/clock-out pair as a transaction posting | ||||||
| some number of hours to an account. | some number of hours to an account. | ||||||
| Or if the session spans more than one day, it is split into several | Or if the session spans more than one day, it is split into several | ||||||
| transactions, one for each day. | transactions, one for each day. | ||||||
| For the above time log, \f[C]hledger\ print\f[] generates these journal | For the above time log, \f[C]hledger print\f[R] generates these journal | ||||||
| entries: | entries: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $\ hledger\ \-f\ t.timeclock\ print | $ hledger -f t.timeclock print | ||||||
| 2015/03/30\ *\ optional\ description\ after\ two\ spaces | 2015/03/30 * optional description after two spaces | ||||||
| \ \ \ \ (some:account\ name)\ \ \ \ \ \ \ \ \ 0.33h |     (some:account name)         0.33h | ||||||
| 
 | 
 | ||||||
| 2015/03/31\ *\ 22:21\-23:59 | 2015/03/31 * 22:21-23:59 | ||||||
| \ \ \ \ (another\ account)\ \ \ \ \ \ \ \ \ 1.64h |     (another account)         1.64h | ||||||
| 
 | 
 | ||||||
| 2015/04/01\ *\ 00:00\-02:00 | 2015/04/01 * 00:00-02:00 | ||||||
| \ \ \ \ (another\ account)\ \ \ \ \ \ \ \ \ 2.01h |     (another account)         2.01h | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| Here is a sample.timeclock to download and some queries to try: | Here is a sample.timeclock to download and some queries to try: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $\ hledger\ \-f\ sample.timeclock\ balance\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ current\ time\ balances | $ hledger -f sample.timeclock balance                               # current time balances | ||||||
| $\ hledger\ \-f\ sample.timeclock\ register\ \-p\ 2009/3\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ sessions\ in\ march\ 2009 | $ hledger -f sample.timeclock register -p 2009/3                    # sessions in march 2009 | ||||||
| $\ hledger\ \-f\ sample.timeclock\ register\ \-p\ weekly\ \-\-depth\ 1\ \-\-empty\ \ #\ time\ summary\ by\ week | $ hledger -f sample.timeclock register -p weekly --depth 1 --empty  # time summary by week | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| To generate time logs, ie to clock in and clock out, you could: | To generate time logs, ie to clock in and clock out, you could: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| use emacs and the built\-in timeclock.el, or the extended | use emacs and the built-in timeclock.el, or the extended timeclock-x.el | ||||||
| timeclock\-x.el and perhaps the extras in ledgerutils.el | and perhaps the extras in ledgerutils.el | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| at the command line, use these bash aliases: | at the command line, use these bash aliases: | ||||||
| \f[C]shell\ \ \ alias\ ti="echo\ i\ `date\ \[aq]+%Y\-%m\-%d\ %H:%M:%S\[aq]`\ \\$*\ >>$TIMELOG"\ \ \ alias\ to="echo\ o\ `date\ \[aq]+%Y\-%m\-%d\ %H:%M:%S\[aq]`\ >>$TIMELOG"\f[] | \f[C]shell   alias ti=\[dq]echo i \[ga]date \[aq]+%Y-%m-%d %H:%M:%S\[aq]\[ga] \[rs]$* >>$TIMELOG\[dq]   alias to=\[dq]echo o \[ga]date \[aq]+%Y-%m-%d %H:%M:%S\[aq]\[ga] >>$TIMELOG\[dq]\f[R] | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| or use the old \f[C]ti\f[] and \f[C]to\f[] scripts in the ledger 2.x | or use the old \f[C]ti\f[R] and \f[C]to\f[R] scripts in the ledger 2.x | ||||||
| repository. | repository. | ||||||
| These rely on a "timeclock" executable which I think is just the ledger | These rely on a \[dq]timeclock\[dq] executable which I think is just the | ||||||
| 2 executable renamed. | ledger 2 executable renamed. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .SH "REPORTING BUGS" | .SH "REPORTING BUGS" | ||||||
|  | |||||||
| @ -4,8 +4,8 @@ stdin. | |||||||
|  |  | ||||||
| File: hledger_timeclock.info,  Node: Top,  Up: (dir) | File: hledger_timeclock.info,  Node: Top,  Up: (dir) | ||||||
| 
 | 
 | ||||||
| hledger_timeclock(5) hledger 1.14 | hledger_timeclock(5) hledger 1.14.99 | ||||||
| ********************************* | ************************************ | ||||||
| 
 | 
 | ||||||
| hledger can read timeclock files.  As with Ledger, these are (a subset | hledger can read timeclock files.  As with Ledger, these are (a subset | ||||||
| of) timeclock.el's format, containing clock-in and clock-out entries as | of) timeclock.el's format, containing clock-in and clock-out entries as | ||||||
| @ -48,6 +48,7 @@ $ hledger -f sample.timeclock register -p weekly --depth 1 --empty  # time summa | |||||||
|    * at the command line, use these bash aliases: 'shell alias ti="echo |    * at the command line, use these bash aliases: 'shell alias ti="echo | ||||||
|      i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG" alias to="echo o |      i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG" alias to="echo o | ||||||
|      `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"' |      `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"' | ||||||
|  | 
 | ||||||
|    * or use the old 'ti' and 'to' scripts in the ledger 2.x repository. |    * or use the old 'ti' and 'to' scripts in the ledger 2.x repository. | ||||||
|      These rely on a "timeclock" executable which I think is just the |      These rely on a "timeclock" executable which I think is just the | ||||||
|      ledger 2 executable renamed. |      ledger 2 executable renamed. | ||||||
|  | |||||||
| @ -42,11 +42,12 @@ DESCRIPTION | |||||||
| 
 | 
 | ||||||
|        To generate time logs, ie to clock in and clock out, you could: |        To generate time logs, ie to clock in and clock out, you could: | ||||||
| 
 | 
 | ||||||
|        o use emacs and  the  built-in  timeclock.el,  or  the  extended  time- |        o use emacs and the built-in timeclock.el, or the  extended  timeclock- | ||||||
|          clock-x.el and perhaps the extras in ledgerutils.el |          x.el and perhaps the extras in ledgerutils.el | ||||||
| 
 | 
 | ||||||
|        o at     the     command     line,     use    these    bash    aliases: |        o at the command line, use these bash aliases: shell   alias ti="echo i | ||||||
|          shell   alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"   alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG" |          `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"   alias to="echo o  `date | ||||||
|  |          '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG" | ||||||
| 
 | 
 | ||||||
|        o or use the old ti and to scripts in the ledger 2.x repository.  These |        o or use the old ti and to scripts in the ledger 2.x repository.  These | ||||||
|          rely on a "timeclock" executable which I think is just the  ledger  2 |          rely on a "timeclock" executable which I think is just the  ledger  2 | ||||||
| @ -77,4 +78,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.14                      March 2019              hledger_timeclock(5) | hledger 1.14.99                   March 2019              hledger_timeclock(5) | ||||||
|  | |||||||
| @ -1,32 +1,32 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger_timedot" "5" "March 2019" "hledger 1.14" "hledger User Manuals" | .TH "hledger_timedot" "5" "March 2019" "hledger 1.14.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .SH NAME | .SH NAME | ||||||
| .PP | .PP | ||||||
| Timedot \- hledger\[aq]s human\-friendly time logging format | Timedot - hledger\[aq]s human-friendly time logging format | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| .PP | .PP | ||||||
| Timedot is a plain text format for logging dated, categorised quantities | Timedot is a plain text format for logging dated, categorised quantities | ||||||
| (of time, usually), supported by hledger. | (of time, usually), supported by hledger. | ||||||
| It is convenient for approximate and retroactive time logging, eg when | It is convenient for approximate and retroactive time logging, eg when | ||||||
| the real\-time clock\-in/out required with a timeclock file is too | the real-time clock-in/out required with a timeclock file is too precise | ||||||
| precise or too interruptive. | or too interruptive. | ||||||
| It can be formatted like a bar chart, making clear at a glance where | It can be formatted like a bar chart, making clear at a glance where | ||||||
| time was spent. | time was spent. | ||||||
| .PP | .PP | ||||||
| Though called "timedot", this format is read by hledger as commodityless | Though called \[dq]timedot\[dq], this format is read by hledger as | ||||||
| quantities, so it could be used to represent dated quantities other than | commodityless quantities, so it could be used to represent dated | ||||||
| time. | quantities other than time. | ||||||
| In the docs below we\[aq]ll assume it\[aq]s time. | In the docs below we\[aq]ll assume it\[aq]s time. | ||||||
| .SH FILE FORMAT | .SH FILE FORMAT | ||||||
| .PP | .PP | ||||||
| A timedot file contains a series of day entries. | A timedot file contains a series of day entries. | ||||||
| A day entry begins with a date, and is followed by category/quantity | A day entry begins with a date, and is followed by category/quantity | ||||||
| pairs, one per line. | pairs, one per line. | ||||||
| Dates are hledger\-style simple dates (see hledger_journal(5)). | Dates are hledger-style simple dates (see hledger_journal(5)). | ||||||
| Categories are hledger\-style account names, optionally indented. | Categories are hledger-style account names, optionally indented. | ||||||
| As in a hledger journal, there must be at least two spaces between the | As in a hledger journal, there must be at least two spaces between the | ||||||
| category (account name) and the quantity. | category (account name) and the quantity. | ||||||
| .PP | .PP | ||||||
| @ -41,9 +41,9 @@ an integral or decimal number, representing hours. | |||||||
| Eg: 1.5 | Eg: 1.5 | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| an integral or decimal number immediately followed by a unit symbol | an integral or decimal number immediately followed by a unit symbol | ||||||
| \f[C]s\f[], \f[C]m\f[], \f[C]h\f[], \f[C]d\f[], \f[C]w\f[], \f[C]mo\f[], | \f[C]s\f[R], \f[C]m\f[R], \f[C]h\f[R], \f[C]d\f[R], \f[C]w\f[R], | ||||||
| or \f[C]y\f[], representing seconds, minutes, hours, days weeks, months | \f[C]mo\f[R], or \f[C]y\f[R], representing seconds, minutes, hours, days | ||||||
| or years respectively. | weeks, months or years respectively. | ||||||
| Eg: 90m. | Eg: 90m. | ||||||
| The following equivalencies are assumed, currently: 1m = 60s, 1h = 60m, | The following equivalencies are assumed, currently: 1m = 60s, 1h = 60m, | ||||||
| 1d = 24h, 1w = 7d, 1mo = 30d, 1y=365d. | 1d = 24h, 1w = 7d, 1mo = 30d, 1y=365d. | ||||||
| @ -53,16 +53,16 @@ An example: | |||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| #\ on\ this\ day,\ 6h\ was\ spent\ on\ client\ work,\ 1.5h\ on\ haskell\ FOSS\ work,\ etc. | # on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc. | ||||||
| 2016/2/1 | 2016/2/1 | ||||||
| inc:client1\ \ \ ....\ ....\ ....\ ....\ ....\ .... | inc:client1   .... .... .... .... .... .... | ||||||
| fos:haskell\ \ \ ....\ ..\  | fos:haskell   .... ..  | ||||||
| biz:research\ \ . | biz:research  . | ||||||
| 
 | 
 | ||||||
| 2016/2/2 | 2016/2/2 | ||||||
| inc:client1\ \ \ ....\ .... | inc:client1   .... .... | ||||||
| biz:research\ \ . | biz:research  . | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| Or with numbers: | Or with numbers: | ||||||
| @ -70,42 +70,42 @@ Or with numbers: | |||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| 2016/2/3 | 2016/2/3 | ||||||
| inc:client1\ \ \ 4 | inc:client1   4 | ||||||
| fos:hledger\ \ \ 3 | fos:hledger   3 | ||||||
| biz:research\ \ 1 | biz:research  1 | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| Reporting: | Reporting: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $\ hledger\ \-f\ t.timedot\ print\ date:2016/2/2 | $ hledger -f t.timedot print date:2016/2/2 | ||||||
| 2016/02/02\ * | 2016/02/02 * | ||||||
| \ \ \ \ (inc:client1)\ \ \ \ \ \ \ \ \ \ 2.00 |     (inc:client1)          2.00 | ||||||
| 
 | 
 | ||||||
| 2016/02/02\ * | 2016/02/02 * | ||||||
| \ \ \ \ (biz:research)\ \ \ \ \ \ \ \ \ \ 0.25 |     (biz:research)          0.25 | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $\ hledger\ \-f\ t.timedot\ bal\ \-\-daily\ \-\-tree | $ hledger -f t.timedot bal --daily --tree | ||||||
| Balance\ changes\ in\ 2016/02/01\-2016/02/03: | Balance changes in 2016/02/01-2016/02/03: | ||||||
| 
 | 
 | ||||||
| \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2016/02/01d\ \ 2016/02/02d\ \ 2016/02/03d\  |             ||  2016/02/01d  2016/02/02d  2016/02/03d  | ||||||
| ============++======================================== | ============++======================================== | ||||||
| \ biz\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 1.00\  |  biz        ||         0.25         0.25         1.00  | ||||||
| \ \ \ research\ ||\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 1.00\  |    research ||         0.25         0.25         1.00  | ||||||
| \ fos\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 1.50\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ 3.00\  |  fos        ||         1.50            0         3.00  | ||||||
| \ \ \ haskell\ \ ||\ \ \ \ \ \ \ \ \ 1.50\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ 0\  |    haskell  ||         1.50            0            0  | ||||||
| \ \ \ hledger\ \ ||\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ 3.00\  |    hledger  ||            0            0         3.00  | ||||||
| \ inc\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 6.00\ \ \ \ \ \ \ \ \ 2.00\ \ \ \ \ \ \ \ \ 4.00\  |  inc        ||         6.00         2.00         4.00  | ||||||
| \ \ \ client1\ \ ||\ \ \ \ \ \ \ \ \ 6.00\ \ \ \ \ \ \ \ \ 2.00\ \ \ \ \ \ \ \ \ 4.00\  |    client1  ||         6.00         2.00         4.00  | ||||||
| \-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | ------------++---------------------------------------- | ||||||
| \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 7.75\ \ \ \ \ \ \ \ \ 2.25\ \ \ \ \ \ \ \ \ 8.00\  |             ||         7.75         2.25         8.00  | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| I prefer to use period for separating account components. | I prefer to use period for separating account components. | ||||||
| @ -114,20 +114,20 @@ We can make this work with an account alias: | |||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| 2016/2/4 | 2016/2/4 | ||||||
| fos.hledger.timedot\ \ 4 | fos.hledger.timedot  4 | ||||||
| fos.ledger\ \ \ \ \ \ \ \ \ \ \ .. | fos.ledger           .. | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $\ hledger\ \-f\ t.timedot\ \-\-alias\ /\\\\./=:\ bal\ date:2016/2/4 | $ hledger -f t.timedot --alias /\[rs]\[rs]./=: bal date:2016/2/4 | ||||||
| \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.50\ \ fos |                 4.50  fos | ||||||
| \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.00\ \ \ \ hledger:timedot |                 4.00    hledger:timedot | ||||||
| \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0.50\ \ \ \ ledger |                 0.50    ledger | ||||||
| \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | -------------------- | ||||||
| \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.50 |                 4.50 | ||||||
| \f[] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| Here is a sample.timedot. | Here is a sample.timedot. | ||||||
|  | |||||||
| @ -4,8 +4,8 @@ stdin. | |||||||
|  |  | ||||||
| File: hledger_timedot.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir) | File: hledger_timedot.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir) | ||||||
| 
 | 
 | ||||||
| hledger_timedot(5) hledger 1.14 | hledger_timedot(5) hledger 1.14.99 | ||||||
| ******************************* | ********************************** | ||||||
| 
 | 
 | ||||||
| Timedot is a plain text format for logging dated, categorised quantities | Timedot is a plain text format for logging dated, categorised quantities | ||||||
| (of time, usually), supported by hledger.  It is convenient for | (of time, usually), supported by hledger.  It is convenient for | ||||||
| @ -17,6 +17,7 @@ glance where time was spent. | |||||||
|    Though called "timedot", this format is read by hledger as |    Though called "timedot", this format is read by hledger as | ||||||
| commodityless quantities, so it could be used to represent dated | commodityless quantities, so it could be used to represent dated | ||||||
| quantities other than time.  In the docs below we'll assume it's time. | quantities other than time.  In the docs below we'll assume it's time. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * FILE FORMAT:: | * FILE FORMAT:: | ||||||
| @ -110,7 +111,7 @@ $ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4 | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top76 | Node: Top76 | ||||||
| Node: FILE FORMAT807 | Node: FILE FORMAT814 | ||||||
| Ref: #file-format908 | Ref: #file-format915 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -9,10 +9,10 @@ NAME | |||||||
| DESCRIPTION | DESCRIPTION | ||||||
|        Timedot  is  a plain text format for logging dated, categorised quanti- |        Timedot  is  a plain text format for logging dated, categorised quanti- | ||||||
|        ties (of time, usually), supported by hledger.  It  is  convenient  for |        ties (of time, usually), supported by hledger.  It  is  convenient  for | ||||||
|        approximate  and  retroactive  time  logging,  eg  when  the  real-time |        approximate  and retroactive time logging, eg when the real-time clock- | ||||||
|        clock-in/out required with a timeclock  file  is  too  precise  or  too |        in/out required with a timeclock file is too precise or  too  interrup- | ||||||
|        interruptive.   It can be formatted like a bar chart, making clear at a |        tive.   It  can be formatted like a bar chart, making clear at a glance | ||||||
|        glance where time was spent. |        where time was spent. | ||||||
| 
 | 
 | ||||||
|        Though called "timedot", this format is read by hledger  as  commodity- |        Though called "timedot", this format is read by hledger  as  commodity- | ||||||
|        less  quantities,  so  it  could  be used to represent dated quantities |        less  quantities,  so  it  could  be used to represent dated quantities | ||||||
| @ -124,4 +124,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.14                      March 2019                hledger_timedot(5) | hledger 1.14.99                   March 2019                hledger_timedot(5) | ||||||
|  | |||||||
| @ -1,227 +1,161 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger\-ui" "1" "March 2019" "hledger\-ui 1.14" "hledger User Manuals" | .TH "hledger-ui" "1" "March 2019" "hledger-ui 1.14.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .SH NAME | .SH NAME | ||||||
| .PP | .PP | ||||||
| hledger\-ui \- curses\-style interface for the hledger accounting tool | hledger-ui - curses-style interface for the hledger accounting tool | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| .PP | .PP | ||||||
| \f[C]hledger\-ui\ [OPTIONS]\ [QUERYARGS]\f[] | \f[C]hledger-ui [OPTIONS] [QUERYARGS]\f[R] | ||||||
| .PD 0 | .PD 0 | ||||||
| .P | .P | ||||||
| .PD | .PD | ||||||
| \f[C]hledger\ ui\ \-\-\ [OPTIONS]\ [QUERYARGS]\f[] | \f[C]hledger ui -- [OPTIONS] [QUERYARGS]\f[R] | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| .PP | .PP | ||||||
| hledger is a cross\-platform program for tracking money, time, or any | hledger is a cross-platform program for tracking money, time, or any | ||||||
| other commodity, using double\-entry accounting and a simple, editable | other commodity, using double-entry accounting and a simple, editable | ||||||
| file format. | file format. | ||||||
| hledger is inspired by and largely compatible with ledger(1). | hledger is inspired by and largely compatible with ledger(1). | ||||||
| .PP | .PP | ||||||
| hledger\-ui is hledger\[aq]s curses\-style interface, providing an | hledger-ui is hledger\[aq]s curses-style interface, providing an | ||||||
| efficient full\-window text UI for viewing accounts and transactions, | efficient full-window text UI for viewing accounts and transactions, and | ||||||
| and some limited data entry capability. | some limited data entry capability. | ||||||
| It is easier than hledger\[aq]s command\-line interface, and sometimes | It is easier than hledger\[aq]s command-line interface, and sometimes | ||||||
| quicker and more convenient than the web interface. | quicker and more convenient than the web interface. | ||||||
| .PP | .PP | ||||||
| Note hledger\-ui has some different defaults (experimental): | Note hledger-ui has some different defaults (experimental): | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| it generates rule\-based transactions and postings by default | it generates rule-based transactions and postings by default (--forecast | ||||||
| (\-\-forecast and \-\-auto are always on). | and --auto are always on). | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| it hides transactions dated in the future by default (change this with | it hides transactions dated in the future by default (change this with | ||||||
| \-\-future or the F key). | --future or the F key). | ||||||
| .PP | .PP | ||||||
| Like hledger, it reads data from one or more files in hledger journal, | Like hledger, it reads data from one or more files in hledger journal, | ||||||
| timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or | timeclock, timedot, or CSV format specified with \f[C]-f\f[R], or | ||||||
| \f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows, | \f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows, | ||||||
| perhaps \f[C]C:/Users/USER/.hledger.journal\f[]). | perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| For more about this see hledger(1), hledger_journal(5) etc. | For more about this see hledger(1), hledger_journal(5) etc. | ||||||
| .SH OPTIONS | .SH OPTIONS | ||||||
| .PP | .PP | ||||||
| Note: if invoking hledger\-ui as a hledger subcommand, write | Note: if invoking hledger-ui as a hledger subcommand, write \f[C]--\f[R] | ||||||
| \f[C]\-\-\f[] before options as shown above. | before options as shown above. | ||||||
| .PP | .PP | ||||||
| Any QUERYARGS are interpreted as a hledger search query which filters | Any QUERYARGS are interpreted as a hledger search query which filters | ||||||
| the data. | the data. | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-watch\f[] | .B \f[C]--watch\f[R] | ||||||
| watch for data and date changes and reload automatically | watch for data and date changes and reload automatically | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-theme=default|terminal|greenterm\f[] | .B \f[C]--theme=default|terminal|greenterm\f[R] | ||||||
| use this custom display theme | use this custom display theme | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-register=ACCTREGEX\f[] | .B \f[C]--register=ACCTREGEX\f[R] | ||||||
| start in the (first) matched account\[aq]s register screen | start in the (first) matched account\[aq]s register screen | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-change\f[] | .B \f[C]--change\f[R] | ||||||
| show period balances (changes) at startup instead of historical balances | show period balances (changes) at startup instead of historical balances | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-F\ \-\-flat\f[] | .B \f[C]-F --flat\f[R] | ||||||
| show accounts as a list (default) | show accounts as a list (default) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-T\ \-\-tree\f[] | .B \f[C]-T --tree\f[R] | ||||||
| show accounts as a tree | show accounts as a tree | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-future\f[] | .B \f[C]--future\f[R] | ||||||
| show transactions dated later than today (normally hidden) | show transactions dated later than today (normally hidden) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .PP | .PP | ||||||
| hledger input options: | hledger input options: | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-f\ FILE\ \-\-file=FILE\f[] | .B \f[C]-f FILE --file=FILE\f[R] | ||||||
| use a different input file. | use a different input file. | ||||||
| For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or | For stdin, use - (default: \f[C]$LEDGER_FILE\f[R] or | ||||||
| \f[C]$HOME/.hledger.journal\f[]) | \f[C]$HOME/.hledger.journal\f[R]) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-rules\-file=RULESFILE\f[] | .B \f[C]--rules-file=RULESFILE\f[R] | ||||||
| Conversion rules file to use when reading CSV (default: FILE.rules) | Conversion rules file to use when reading CSV (default: FILE.rules) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-separator=CHAR\f[] | .B \f[C]--separator=CHAR\f[R] | ||||||
| Field separator to expect when reading CSV (default: \[aq],\[aq]) | Field separator to expect when reading CSV (default: \[aq],\[aq]) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-alias=OLD=NEW\f[] | .B \f[C]--alias=OLD=NEW\f[R] | ||||||
| rename accounts named OLD to NEW | rename accounts named OLD to NEW | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-anon\f[] | .B \f[C]--anon\f[R] | ||||||
| anonymize accounts and payees | anonymize accounts and payees | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-pivot\ FIELDNAME\f[] | .B \f[C]--pivot FIELDNAME\f[R] | ||||||
| use some other field or tag for the account name | use some other field or tag for the account name | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-I\ \-\-ignore\-assertions\f[] | .B \f[C]-I --ignore-assertions\f[R] | ||||||
| ignore any failing balance assertions | ignore any failing balance assertions | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .PP | .PP | ||||||
| hledger reporting options: | hledger reporting options: | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-b\ \-\-begin=DATE\f[] | .B \f[C]-b --begin=DATE\f[R] | ||||||
| include postings/txns on or after this date | include postings/txns on or after this date | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-e\ \-\-end=DATE\f[] | .B \f[C]-e --end=DATE\f[R] | ||||||
| include postings/txns before this date | include postings/txns before this date | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-D\ \-\-daily\f[] | .B \f[C]-D --daily\f[R] | ||||||
| multiperiod/multicolumn report by day | multiperiod/multicolumn report by day | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-W\ \-\-weekly\f[] | .B \f[C]-W --weekly\f[R] | ||||||
| multiperiod/multicolumn report by week | multiperiod/multicolumn report by week | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-M\ \-\-monthly\f[] | .B \f[C]-M --monthly\f[R] | ||||||
| multiperiod/multicolumn report by month | multiperiod/multicolumn report by month | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-Q\ \-\-quarterly\f[] | .B \f[C]-Q --quarterly\f[R] | ||||||
| multiperiod/multicolumn report by quarter | multiperiod/multicolumn report by quarter | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-Y\ \-\-yearly\f[] | .B \f[C]-Y --yearly\f[R] | ||||||
| multiperiod/multicolumn report by year | multiperiod/multicolumn report by year | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-p\ \-\-period=PERIODEXP\f[] | .B \f[C]-p --period=PERIODEXP\f[R] | ||||||
| set start date, end date, and/or reporting interval all at once using | set start date, end date, and/or reporting interval all at once using | ||||||
| period expressions syntax (overrides the flags above) | period expressions syntax (overrides the flags above) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-date2\f[] | .B \f[C]--date2\f[R] | ||||||
| match the secondary date instead (see command help for other effects) | match the secondary date instead (see command help for other effects) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-U\ \-\-unmarked\f[] | .B \f[C]-U --unmarked\f[R] | ||||||
| include only unmarked postings/txns (can combine with \-P or \-C) | include only unmarked postings/txns (can combine with -P or -C) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-P\ \-\-pending\f[] | .B \f[C]-P --pending\f[R] | ||||||
| include only pending postings/txns | include only pending postings/txns | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-C\ \-\-cleared\f[] | .B \f[C]-C --cleared\f[R] | ||||||
| include only cleared postings/txns | include only cleared postings/txns | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-R\ \-\-real\f[] | .B \f[C]-R --real\f[R] | ||||||
| include only non\-virtual postings | include only non-virtual postings | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-NUM\ \-\-depth=NUM\f[] | .B \f[C]-NUM --depth=NUM\f[R] | ||||||
| hide/aggregate accounts or postings more than NUM levels deep | hide/aggregate accounts or postings more than NUM levels deep | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-E\ \-\-empty\f[] | .B \f[C]-E --empty\f[R] | ||||||
| show items with zero amount, normally hidden (and vice\-versa in | show items with zero amount, normally hidden (and vice-versa in | ||||||
| hledger\-ui/hledger\-web) | hledger-ui/hledger-web) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-B\ \-\-cost\f[] | .B \f[C]-B --cost\f[R] | ||||||
| convert amounts to their cost at transaction time (using the transaction | convert amounts to their cost at transaction time (using the transaction | ||||||
| price, if any) | price, if any) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-V\ \-\-value\f[] | .B \f[C]-V --value\f[R] | ||||||
| convert amounts to their market value on the report end date (using the | convert amounts to their market value on the report end date (using the | ||||||
| most recent applicable market price, if any) | most recent applicable market price, if any) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-auto\f[] | .B \f[C]--auto\f[R] | ||||||
| apply automated posting rules to modify transactions. | apply automated posting rules to modify transactions. | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-forecast\f[] | .B \f[C]--forecast\f[R] | ||||||
| apply periodic transaction rules to generate future transactions, to 6 | apply periodic transaction rules to generate future transactions, to 6 | ||||||
| months from now or report end date. | months from now or report end date. | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .PP | .PP | ||||||
| When a reporting option appears more than once in the command line, the | When a reporting option appears more than once in the command line, the | ||||||
| last one takes precedence. | last one takes precedence. | ||||||
| @ -230,38 +164,33 @@ Some reporting options can also be written as query arguments. | |||||||
| .PP | .PP | ||||||
| hledger help options: | hledger help options: | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-h\ \-\-help\f[] | .B \f[C]-h --help\f[R] | ||||||
| show general usage (or after COMMAND, command usage) | show general usage (or after COMMAND, command usage) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-version\f[] | .B \f[C]--version\f[R] | ||||||
| show version | show version | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-debug[=N]\f[] | .B \f[C]--debug[=N]\f[R] | ||||||
| show debug output (levels 1\-9, default: 1) | show debug output (levels 1-9, default: 1) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .PP | .PP | ||||||
| A \@FILE argument will be expanded to the contents of FILE, which should | A \[at]FILE argument will be expanded to the contents of FILE, which | ||||||
| contain one command line option/argument per line. | should contain one command line option/argument per line. | ||||||
| (To prevent this, insert a \f[C]\-\-\f[] argument before.) | (To prevent this, insert a \f[C]--\f[R] argument before.) | ||||||
| .SH KEYS | .SH KEYS | ||||||
| .PP | .PP | ||||||
| \f[C]?\f[] shows a help dialog listing all keys. | \f[C]?\f[R] shows a help dialog listing all keys. | ||||||
| (Some of these also appear in the quick help at the bottom of each | (Some of these also appear in the quick help at the bottom of each | ||||||
| screen.) Press \f[C]?\f[] again (or \f[C]ESCAPE\f[], or \f[C]LEFT\f[]) | screen.) Press \f[C]?\f[R] again (or \f[C]ESCAPE\f[R], or | ||||||
| to close it. | \f[C]LEFT\f[R]) to close it. | ||||||
| The following keys work on most screens: | The following keys work on most screens: | ||||||
| .PP | .PP | ||||||
| The cursor keys navigate: \f[C]right\f[] (or \f[C]enter\f[]) goes | The cursor keys navigate: \f[C]right\f[R] (or \f[C]enter\f[R]) goes | ||||||
| deeper, \f[C]left\f[] returns to the previous screen, | deeper, \f[C]left\f[R] returns to the previous screen, | ||||||
| \f[C]up\f[]/\f[C]down\f[]/\f[C]page\ up\f[]/\f[C]page\ down\f[]/\f[C]home\f[]/\f[C]end\f[] | \f[C]up\f[R]/\f[C]down\f[R]/\f[C]page up\f[R]/\f[C]page down\f[R]/\f[C]home\f[R]/\f[C]end\f[R] | ||||||
| move up and down through lists. | move up and down through lists. | ||||||
| Vi\-style (\f[C]h\f[]/\f[C]j\f[]/\f[C]k\f[]/\f[C]l\f[]) and Emacs\-style | Vi-style (\f[C]h\f[R]/\f[C]j\f[R]/\f[C]k\f[R]/\f[C]l\f[R]) and | ||||||
| (\f[C]CTRL\-p\f[]/\f[C]CTRL\-n\f[]/\f[C]CTRL\-f\f[]/\f[C]CTRL\-b\f[]) | Emacs-style | ||||||
|  | (\f[C]CTRL-p\f[R]/\f[C]CTRL-n\f[R]/\f[C]CTRL-f\f[R]/\f[C]CTRL-b\f[R]) | ||||||
| movement keys are also supported. | movement keys are also supported. | ||||||
| A tip: movement speed is limited by your keyboard repeat rate, to move | A tip: movement speed is limited by your keyboard repeat rate, to move | ||||||
| faster you may want to adjust it. | faster you may want to adjust it. | ||||||
| @ -269,67 +198,67 @@ faster you may want to adjust it. | |||||||
| .PP | .PP | ||||||
| With shift pressed, the cursor keys adjust the report period, limiting | With shift pressed, the cursor keys adjust the report period, limiting | ||||||
| the transactions to be shown (by default, all are shown). | the transactions to be shown (by default, all are shown). | ||||||
| \f[C]shift\-down/up\f[] steps downward and upward through these standard | \f[C]shift-down/up\f[R] steps downward and upward through these standard | ||||||
| report period durations: year, quarter, month, week, day. | report period durations: year, quarter, month, week, day. | ||||||
| Then, \f[C]shift\-left/right\f[] moves to the previous/next period. | Then, \f[C]shift-left/right\f[R] moves to the previous/next period. | ||||||
| \f[C]t\f[] sets the report period to today. | \f[C]t\f[R] sets the report period to today. | ||||||
| With the \f[C]\-\-watch\f[] option, when viewing a "current" period (the | With the \f[C]--watch\f[R] option, when viewing a \[dq]current\[dq] | ||||||
| current day, week, month, quarter, or year), the period will move | period (the current day, week, month, quarter, or year), the period will | ||||||
| automatically to track the current date. | move automatically to track the current date. | ||||||
| To set a non\-standard period, you can use \f[C]/\f[] and a | To set a non-standard period, you can use \f[C]/\f[R] and a | ||||||
| \f[C]date:\f[] query. | \f[C]date:\f[R] query. | ||||||
| .PP | .PP | ||||||
| \f[C]/\f[] lets you set a general filter query limiting the data shown, | \f[C]/\f[R] lets you set a general filter query limiting the data shown, | ||||||
| using the same query terms as in hledger and hledger\-web. | using the same query terms as in hledger and hledger-web. | ||||||
| While editing the query, you can use CTRL\-a/e/d/k, BS, cursor keys; | While editing the query, you can use CTRL-a/e/d/k, BS, cursor keys; | ||||||
| press \f[C]ENTER\f[] to set it, or \f[C]ESCAPE\f[]to cancel. | press \f[C]ENTER\f[R] to set it, or \f[C]ESCAPE\f[R]to cancel. | ||||||
| There are also keys for quickly adjusting some common filters like | There are also keys for quickly adjusting some common filters like | ||||||
| account depth and transaction status (see below). | account depth and transaction status (see below). | ||||||
| \f[C]BACKSPACE\f[] or \f[C]DELETE\f[] removes all filters, showing all | \f[C]BACKSPACE\f[R] or \f[C]DELETE\f[R] removes all filters, showing all | ||||||
| transactions. | transactions. | ||||||
| .PP | .PP | ||||||
| As mentioned above, hledger\-ui shows auto\-generated periodic | As mentioned above, hledger-ui shows auto-generated periodic | ||||||
| transactions, and hides future transactions (auto\-generated or not) by | transactions, and hides future transactions (auto-generated or not) by | ||||||
| default. | default. | ||||||
| \f[C]F\f[] toggles showing and hiding these future transactions. | \f[C]F\f[R] toggles showing and hiding these future transactions. | ||||||
| This is similar to using a query like \f[C]date:\-tomorrow\f[], but more | This is similar to using a query like \f[C]date:-tomorrow\f[R], but more | ||||||
| convenient. | convenient. | ||||||
| (experimental) | (experimental) | ||||||
| .PP | .PP | ||||||
| \f[C]ESCAPE\f[] removes all filters and jumps back to the top screen. | \f[C]ESCAPE\f[R] removes all filters and jumps back to the top screen. | ||||||
| Or, it cancels a minibuffer edit or help dialog in progress. | Or, it cancels a minibuffer edit or help dialog in progress. | ||||||
| .PP | .PP | ||||||
| \f[C]CTRL\-l\f[] redraws the screen and centers the selection if | \f[C]CTRL-l\f[R] redraws the screen and centers the selection if | ||||||
| possible (selections near the top won\[aq]t be centered, since we | possible (selections near the top won\[aq]t be centered, since we | ||||||
| don\[aq]t scroll above the top). | don\[aq]t scroll above the top). | ||||||
| .PP | .PP | ||||||
| \f[C]g\f[] reloads from the data file(s) and updates the current screen | \f[C]g\f[R] reloads from the data file(s) and updates the current screen | ||||||
| and any previous screens. | and any previous screens. | ||||||
| (With large files, this could cause a noticeable pause.) | (With large files, this could cause a noticeable pause.) | ||||||
| .PP | .PP | ||||||
| \f[C]I\f[] toggles balance assertion checking. | \f[C]I\f[R] toggles balance assertion checking. | ||||||
| Disabling balance assertions temporarily can be useful for | Disabling balance assertions temporarily can be useful for | ||||||
| troubleshooting. | troubleshooting. | ||||||
| .PP | .PP | ||||||
| \f[C]a\f[] runs command\-line hledger\[aq]s add command, and reloads the | \f[C]a\f[R] runs command-line hledger\[aq]s add command, and reloads the | ||||||
| updated file. | updated file. | ||||||
| This allows some basic data entry. | This allows some basic data entry. | ||||||
| .PP | .PP | ||||||
| \f[C]A\f[] is like \f[C]a\f[], but runs the hledger\-iadd tool, which | \f[C]A\f[R] is like \f[C]a\f[R], but runs the hledger-iadd tool, which | ||||||
| provides a curses\-style interface. | provides a curses-style interface. | ||||||
| This key will be available if \f[C]hledger\-iadd\f[] is installed in | This key will be available if \f[C]hledger-iadd\f[R] is installed in | ||||||
| $PATH. | $PATH. | ||||||
| .PP | .PP | ||||||
| \f[C]E\f[] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default | \f[C]E\f[R] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default | ||||||
| (\f[C]emacsclient\ \-a\ ""\ \-nw\f[]) on the journal file. | (\f[C]emacsclient -a \[dq]\[dq] -nw\f[R]) on the journal file. | ||||||
| With some editors (emacs, vi), the cursor will be positioned at the | With some editors (emacs, vi), the cursor will be positioned at the | ||||||
| current transaction when invoked from the register and transaction | current transaction when invoked from the register and transaction | ||||||
| screens, and at the error location (if possible) when invoked from the | screens, and at the error location (if possible) when invoked from the | ||||||
| error screen. | error screen. | ||||||
| .PP | .PP | ||||||
| \f[C]q\f[] quits the application. | \f[C]q\f[R] quits the application. | ||||||
| .PP | .PP | ||||||
| Additional screen\-specific keys are described below. | Additional screen-specific keys are described below. | ||||||
| .SH SCREENS | .SH SCREENS | ||||||
| .SS Accounts screen | .SS Accounts screen | ||||||
| .PP | .PP | ||||||
| @ -342,21 +271,21 @@ if you specify a query on the command line, it shows just the matched | |||||||
| accounts and the balances from matched transactions. | accounts and the balances from matched transactions. | ||||||
| .PP | .PP | ||||||
| Account names are shown as a flat list by default. | Account names are shown as a flat list by default. | ||||||
| Press \f[C]T\f[] to toggle tree mode. | Press \f[C]T\f[R] to toggle tree mode. | ||||||
| In flat mode, account balances are exclusive of subaccounts, except | In flat mode, account balances are exclusive of subaccounts, except | ||||||
| where subaccounts are hidden by a depth limit (see below). | where subaccounts are hidden by a depth limit (see below). | ||||||
| In tree mode, all account balances are inclusive of subaccounts. | In tree mode, all account balances are inclusive of subaccounts. | ||||||
| .PP | .PP | ||||||
| To see less detail, press a number key, \f[C]1\f[] to \f[C]9\f[], to set | To see less detail, press a number key, \f[C]1\f[R] to \f[C]9\f[R], to | ||||||
| a depth limit. | set a depth limit. | ||||||
| Or use \f[C]\-\f[] to decrease and \f[C]+\f[]/\f[C]=\f[] to increase the | Or use \f[C]-\f[R] to decrease and \f[C]+\f[R]/\f[C]=\f[R] to increase | ||||||
| depth limit. | the depth limit. | ||||||
| \f[C]0\f[] shows even less detail, collapsing all accounts to a single | \f[C]0\f[R] shows even less detail, collapsing all accounts to a single | ||||||
| total. | total. | ||||||
| To remove the depth limit, set it higher than the maximum account depth, | To remove the depth limit, set it higher than the maximum account depth, | ||||||
| or press \f[C]ESCAPE\f[]. | or press \f[C]ESCAPE\f[R]. | ||||||
| .PP | .PP | ||||||
| \f[C]H\f[] toggles between showing historical balances or period | \f[C]H\f[R] toggles between showing historical balances or period | ||||||
| balances. | balances. | ||||||
| Historical balances (the default) are ending balances at the end of the | Historical balances (the default) are ending balances at the end of the | ||||||
| report period, taking into account all transactions before that date | report period, taking into account all transactions before that date | ||||||
| @ -368,21 +297,21 @@ Period balances ignore transactions before the report start date, so | |||||||
| they show the change in balance during the report period. | they show the change in balance during the report period. | ||||||
| They are more useful eg when viewing a time log. | They are more useful eg when viewing a time log. | ||||||
| .PP | .PP | ||||||
| \f[C]U\f[] toggles filtering by unmarked status, including or excluding | \f[C]U\f[R] toggles filtering by unmarked status, including or excluding | ||||||
| unmarked postings in the balances. | unmarked postings in the balances. | ||||||
| Similarly, \f[C]P\f[] toggles pending postings, and \f[C]C\f[] toggles | Similarly, \f[C]P\f[R] toggles pending postings, and \f[C]C\f[R] toggles | ||||||
| cleared postings. | cleared postings. | ||||||
| (By default, balances include all postings; if you activate one or two | (By default, balances include all postings; if you activate one or two | ||||||
| status filters, only those postings are included; and if you activate | status filters, only those postings are included; and if you activate | ||||||
| all three, the filter is removed.) | all three, the filter is removed.) | ||||||
| .PP | .PP | ||||||
| \f[C]R\f[] toggles real mode, in which virtual postings are ignored. | \f[C]R\f[R] toggles real mode, in which virtual postings are ignored. | ||||||
| .PP | .PP | ||||||
| \f[C]Z\f[] toggles nonzero mode, in which only accounts with nonzero | \f[C]Z\f[R] toggles nonzero mode, in which only accounts with nonzero | ||||||
| balances are shown (hledger\-ui shows zero items by default, unlike | balances are shown (hledger-ui shows zero items by default, unlike | ||||||
| command\-line hledger). | command-line hledger). | ||||||
| .PP | .PP | ||||||
| Press \f[C]right\f[] or \f[C]enter\f[] to view an account\[aq]s | Press \f[C]right\f[R] or \f[C]enter\f[R] to view an account\[aq]s | ||||||
| transactions register. | transactions register. | ||||||
| .SS Register screen | .SS Register screen | ||||||
| .PP | .PP | ||||||
| @ -399,7 +328,7 @@ inflow to this account, negative for an outflow. | |||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| the running historical total or period total for the current account, | the running historical total or period total for the current account, | ||||||
| after the transaction. | after the transaction. | ||||||
| This can be toggled with \f[C]H\f[]. | This can be toggled with \f[C]H\f[R]. | ||||||
| Similar to the accounts screen, the historical total is affected by | Similar to the accounts screen, the historical total is affected by | ||||||
| transactions (filtered by the filter query) before the report start | transactions (filtered by the filter query) before the report start | ||||||
| date, while the period total is not. | date, while the period total is not. | ||||||
| @ -416,23 +345,23 @@ to the balance shown on the accounts screen. | |||||||
| .PD 0 | .PD 0 | ||||||
| .P | .P | ||||||
| .PD | .PD | ||||||
| Tree mode/flat mode can be toggled with \f[C]T\f[] here also. | Tree mode/flat mode can be toggled with \f[C]T\f[R] here also. | ||||||
| .PP | .PP | ||||||
| \f[C]U\f[] toggles filtering by unmarked status, showing or hiding | \f[C]U\f[R] toggles filtering by unmarked status, showing or hiding | ||||||
| unmarked transactions. | unmarked transactions. | ||||||
| Similarly, \f[C]P\f[] toggles pending transactions, and \f[C]C\f[] | Similarly, \f[C]P\f[R] toggles pending transactions, and \f[C]C\f[R] | ||||||
| toggles cleared transactions. | toggles cleared transactions. | ||||||
| (By default, transactions with all statuses are shown; if you activate | (By default, transactions with all statuses are shown; if you activate | ||||||
| one or two status filters, only those transactions are shown; and if you | one or two status filters, only those transactions are shown; and if you | ||||||
| activate all three, the filter is removed.) | activate all three, the filter is removed.) | ||||||
| .PP | .PP | ||||||
| \f[C]R\f[] toggles real mode, in which virtual postings are ignored. | \f[C]R\f[R] toggles real mode, in which virtual postings are ignored. | ||||||
| .PP | .PP | ||||||
| \f[C]Z\f[] toggles nonzero mode, in which only transactions posting a | \f[C]Z\f[R] toggles nonzero mode, in which only transactions posting a | ||||||
| nonzero change are shown (hledger\-ui shows zero items by default, | nonzero change are shown (hledger-ui shows zero items by default, unlike | ||||||
| unlike command\-line hledger). | command-line hledger). | ||||||
| .PP | .PP | ||||||
| Press \f[C]right\f[] (or \f[C]enter\f[]) to view the selected | Press \f[C]right\f[R] (or \f[C]enter\f[R]) to view the selected | ||||||
| transaction in detail. | transaction in detail. | ||||||
| .SS Transaction screen | .SS Transaction screen | ||||||
| .PP | .PP | ||||||
| @ -445,8 +374,8 @@ description, comments, along with all of its account postings are shown. | |||||||
| Simple transactions have two postings, but there can be more (or in | Simple transactions have two postings, but there can be more (or in | ||||||
| certain cases, fewer). | certain cases, fewer). | ||||||
| .PP | .PP | ||||||
| \f[C]up\f[] and \f[C]down\f[] will step through all transactions listed | \f[C]up\f[R] and \f[C]down\f[R] will step through all transactions | ||||||
| in the previous account register screen. | listed in the previous account register screen. | ||||||
| In the title bar, the numbers in parentheses show your position within | In the title bar, the numbers in parentheses show your position within | ||||||
| that account register. | that account register. | ||||||
| They will vary depending on which account register you came from | They will vary depending on which account register you came from | ||||||
| @ -463,39 +392,39 @@ normal operation. | |||||||
| (Or, you can press escape to cancel the reload attempt.) | (Or, you can press escape to cancel the reload attempt.) | ||||||
| .SH ENVIRONMENT | .SH ENVIRONMENT | ||||||
| .PP | .PP | ||||||
| \f[B]COLUMNS\f[] The screen width to use. | \f[B]COLUMNS\f[R] The screen width to use. | ||||||
| Default: the full terminal width. | Default: the full terminal width. | ||||||
| .PP | .PP | ||||||
| \f[B]LEDGER_FILE\f[] The journal file path when not specified with | \f[B]LEDGER_FILE\f[R] The journal file path when not specified with | ||||||
| \f[C]\-f\f[]. | \f[C]-f\f[R]. | ||||||
| Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps | Default: \f[C]\[ti]/.hledger.journal\f[R] (on windows, perhaps | ||||||
| \f[C]C:/Users/USER/.hledger.journal\f[]). | \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| .SH FILES | .SH FILES | ||||||
| .PP | .PP | ||||||
| Reads data from one or more files in hledger journal, timeclock, | Reads data from one or more files in hledger journal, timeclock, | ||||||
| timedot, or CSV format specified with \f[C]\-f\f[], or | timedot, or CSV format specified with \f[C]-f\f[R], or | ||||||
| \f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows, | \f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows, | ||||||
| perhaps \f[C]C:/Users/USER/.hledger.journal\f[]). | perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| .SH BUGS | .SH BUGS | ||||||
| .PP | .PP | ||||||
| The need to precede options with \f[C]\-\-\f[] when invoked from hledger | The need to precede options with \f[C]--\f[R] when invoked from hledger | ||||||
| is awkward. | is awkward. | ||||||
| .PP | .PP | ||||||
| \f[C]\-f\-\f[] doesn\[aq]t work (hledger\-ui can\[aq]t read from stdin). | \f[C]-f-\f[R] doesn\[aq]t work (hledger-ui can\[aq]t read from stdin). | ||||||
| .PP | .PP | ||||||
| \f[C]\-V\f[] affects only the accounts screen. | \f[C]-V\f[R] affects only the accounts screen. | ||||||
| .PP | .PP | ||||||
| When you press \f[C]g\f[], the current and all previous screens are | When you press \f[C]g\f[R], the current and all previous screens are | ||||||
| regenerated, which may cause a noticeable pause with large files. | regenerated, which may cause a noticeable pause with large files. | ||||||
| Also there is no visual indication that this is in progress. | Also there is no visual indication that this is in progress. | ||||||
| .PP | .PP | ||||||
| \f[C]\-\-watch\f[] is not yet fully robust. | \f[C]--watch\f[R] is not yet fully robust. | ||||||
| It works well for normal usage, but many file changes in a short time | It works well for normal usage, but many file changes in a short time | ||||||
| (eg saving the file thousands of times with an editor macro) can cause | (eg saving the file thousands of times with an editor macro) can cause | ||||||
| problems at least on OSX. | problems at least on OSX. | ||||||
| Symptoms include: unresponsive UI, periodic resetting of the cursor | Symptoms include: unresponsive UI, periodic resetting of the cursor | ||||||
| position, momentary display of parse errors, high CPU usage eventually | position, momentary display of parse errors, high CPU usage eventually | ||||||
| subsiding, and possibly a small but persistent build\-up of CPU usage | subsiding, and possibly a small but persistent build-up of CPU usage | ||||||
| until the program is restarted. | until the program is restarted. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,8 +3,8 @@ This is hledger-ui.info, produced by makeinfo version 6.5 from stdin. | |||||||
|  |  | ||||||
| File: hledger-ui.info,  Node: Top,  Next: OPTIONS,  Up: (dir) | File: hledger-ui.info,  Node: Top,  Next: OPTIONS,  Up: (dir) | ||||||
| 
 | 
 | ||||||
| hledger-ui(1) hledger-ui 1.14 | hledger-ui(1) hledger-ui 1.14.99 | ||||||
| ***************************** | ******************************** | ||||||
| 
 | 
 | ||||||
| hledger-ui is hledger's curses-style interface, providing an efficient | hledger-ui is hledger's curses-style interface, providing an efficient | ||||||
| full-window text UI for viewing accounts and transactions, and some | full-window text UI for viewing accounts and transactions, and some | ||||||
| @ -24,6 +24,7 @@ journal, timeclock, timedot, or CSV format specified with '-f', or | |||||||
| '$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps | '$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps | ||||||
| 'C:/Users/USER/.hledger.journal').  For more about this see hledger(1), | 'C:/Users/USER/.hledger.journal').  For more about this see hledger(1), | ||||||
| hledger_journal(5) etc. | hledger_journal(5) etc. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * OPTIONS:: | * OPTIONS:: | ||||||
| @ -398,19 +399,19 @@ to cancel the reload attempt.) | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top71 | Node: Top71 | ||||||
| Node: OPTIONS1100 | Node: OPTIONS1107 | ||||||
| Ref: #options1197 | Ref: #options1204 | ||||||
| Node: KEYS4616 | Node: KEYS4623 | ||||||
| Ref: #keys4711 | Ref: #keys4718 | ||||||
| Node: SCREENS7967 | Node: SCREENS7974 | ||||||
| Ref: #screens8052 | Ref: #screens8059 | ||||||
| Node: Accounts screen8142 | Node: Accounts screen8149 | ||||||
| Ref: #accounts-screen8270 | Ref: #accounts-screen8277 | ||||||
| Node: Register screen10486 | Node: Register screen10493 | ||||||
| Ref: #register-screen10641 | Ref: #register-screen10648 | ||||||
| Node: Transaction screen12637 | Node: Transaction screen12644 | ||||||
| Ref: #transaction-screen12795 | Ref: #transaction-screen12802 | ||||||
| Node: Error screen13665 | Node: Error screen13672 | ||||||
| Ref: #error-screen13787 | Ref: #error-screen13794 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -18,9 +18,9 @@ DESCRIPTION | |||||||
| 
 | 
 | ||||||
|        hledger-ui is hledger's curses-style interface, providing an  efficient |        hledger-ui is hledger's curses-style interface, providing an  efficient | ||||||
|        full-window  text  UI  for  viewing accounts and transactions, and some |        full-window  text  UI  for  viewing accounts and transactions, and some | ||||||
|        limited data entry  capability.   It  is  easier  than  hledger's  com- |        limited data entry capability.  It is easier  than  hledger's  command- | ||||||
|        mand-line interface, and sometimes quicker and more convenient than the |        line  interface, and sometimes quicker and more convenient than the web | ||||||
|        web interface. |        interface. | ||||||
| 
 | 
 | ||||||
|        Note hledger-ui has some different defaults (experimental): |        Note hledger-ui has some different defaults (experimental): | ||||||
| 
 | 
 | ||||||
| @ -179,22 +179,22 @@ KEYS | |||||||
|        or LEFT) to close it.  The following keys work on most screens: |        or LEFT) to close it.  The following keys work on most screens: | ||||||
| 
 | 
 | ||||||
|        The cursor keys navigate: right (or enter) goes deeper, left returns to |        The cursor keys navigate: right (or enter) goes deeper, left returns to | ||||||
|        the  previous  screen,  up/down/page up/page down/home/end  move up and |        the  previous  screen,  up/down/page  up/page down/home/end move up and | ||||||
|        down   through   lists.     Vi-style    (h/j/k/l)    and    Emacs-style |        down through lists.  Vi-style (h/j/k/l) and  Emacs-style  (CTRL-p/CTRL- | ||||||
|        (CTRL-p/CTRL-n/CTRL-f/CTRL-b) movement keys are also supported.  A tip: |        n/CTRL-f/CTRL-b)  movement  keys  are  also supported.  A tip: movement | ||||||
|        movement speed is limited by your keyboard repeat rate, to move  faster |        speed is limited by your keyboard repeat rate, to move faster  you  may | ||||||
|        you  may  want to adjust it.  (If you're on a mac, the Karabiner app is |        want  to  adjust it.  (If you're on a mac, the Karabiner app is one way | ||||||
|        one way to do that.) |        to do that.) | ||||||
| 
 | 
 | ||||||
|        With shift pressed, the cursor keys adjust the report period,  limiting |        With shift pressed, the cursor keys adjust the report period,  limiting | ||||||
|        the   transactions   to   be   shown   (by  default,  all  are  shown). |        the  transactions  to  be  shown  (by  default, all are shown).  shift- | ||||||
|        shift-down/up steps downward and upward through these  standard  report |        down/up steps downward and upward through these standard report  period | ||||||
|        period   durations:   year,   quarter,   month,   week,   day.    Then, |        durations:  year,  quarter,  month,  week, day.  Then, shift-left/right | ||||||
|        shift-left/right moves to the previous/next period.  t sets the  report |        moves to the previous/next period.  t sets the report period to  today. | ||||||
|        period  to  today.   With  the --watch option, when viewing a "current" |        With  the  --watch option, when viewing a "current" period (the current | ||||||
|        period (the current day, week, month, quarter,  or  year),  the  period |        day, week, month, quarter, or year), the period will move automatically | ||||||
|        will  move automatically to track the current date.  To set a non-stan- |        to track the current date.  To set a non-standard period, you can use / | ||||||
|        dard period, you can use / and a date: query. |        and a date: query. | ||||||
| 
 | 
 | ||||||
|        / lets you set a general filter query limiting the  data  shown,  using |        / lets you set a general filter query limiting the  data  shown,  using | ||||||
|        the  same query terms as in hledger and hledger-web.  While editing the |        the  same query terms as in hledger and hledger-web.  While editing the | ||||||
| @ -226,15 +226,15 @@ KEYS | |||||||
|        a  runs  command-line  hledger's  add  command, and reloads the updated |        a  runs  command-line  hledger's  add  command, and reloads the updated | ||||||
|        file.  This allows some basic data entry. |        file.  This allows some basic data entry. | ||||||
| 
 | 
 | ||||||
|        A is  like  a,  but  runs  the  hledger-iadd  tool,  which  provides  a |        A is like a, but runs the hledger-iadd tool, which provides  a  curses- | ||||||
|        curses-style  interface.  This key will be available if hledger-iadd is |        style  interface.   This  key  will  be  available  if  hledger-iadd is | ||||||
|        installed in $PATH. |        installed in $PATH. | ||||||
| 
 | 
 | ||||||
|        E  runs  $HLEDGER_UI_EDITOR,  or   $EDITOR,   or   a   default   (emac- |        E runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (emacsclient -a  "" | ||||||
|        sclient -a "" -nw) on the journal file.  With some editors (emacs, vi), |        -nw)  on  the  journal file.  With some editors (emacs, vi), the cursor | ||||||
|        the cursor will be positioned at the current transaction  when  invoked |        will be positioned at the current transaction  when  invoked  from  the | ||||||
|        from  the  register  and transaction screens, and at the error location |        register  and transaction screens, and at the error location (if possi- | ||||||
|        (if possible) when invoked from the error screen. |        ble) when invoked from the error screen. | ||||||
| 
 | 
 | ||||||
|        q quits the application. |        q quits the application. | ||||||
| 
 | 
 | ||||||
| @ -406,4 +406,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger-ui 1.14                   March 2019                     hledger-ui(1) | hledger-ui 1.14.99                March 2019                     hledger-ui(1) | ||||||
|  | |||||||
| @ -1,34 +1,34 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger\-web" "1" "March 2019" "hledger\-web 1.14" "hledger User Manuals" | .TH "hledger-web" "1" "March 2019" "hledger-web 1.14.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .SH NAME | .SH NAME | ||||||
| .PP | .PP | ||||||
| hledger\-web \- web interface for the hledger accounting tool | hledger-web - web interface for the hledger accounting tool | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| .PP | .PP | ||||||
| \f[C]hledger\-web\ [OPTIONS]\f[] | \f[C]hledger-web [OPTIONS]\f[R] | ||||||
| .PD 0 | .PD 0 | ||||||
| .P | .P | ||||||
| .PD | .PD | ||||||
| \f[C]hledger\ web\ \-\-\ [OPTIONS]\f[] | \f[C]hledger web -- [OPTIONS]\f[R] | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| .PP | .PP | ||||||
| hledger is a cross\-platform program for tracking money, time, or any | hledger is a cross-platform program for tracking money, time, or any | ||||||
| other commodity, using double\-entry accounting and a simple, editable | other commodity, using double-entry accounting and a simple, editable | ||||||
| file format. | file format. | ||||||
| hledger is inspired by and largely compatible with ledger(1). | hledger is inspired by and largely compatible with ledger(1). | ||||||
| .PP | .PP | ||||||
| hledger\-web is hledger\[aq]s web interface. | hledger-web is hledger\[aq]s web interface. | ||||||
| It starts a simple web application for browsing and adding transactions, | It starts a simple web application for browsing and adding transactions, | ||||||
| and optionally opens it in a web browser window if possible. | and optionally opens it in a web browser window if possible. | ||||||
| It provides a more user\-friendly UI than the hledger CLI or hledger\-ui | It provides a more user-friendly UI than the hledger CLI or hledger-ui | ||||||
| interface, showing more at once (accounts, the current account register, | interface, showing more at once (accounts, the current account register, | ||||||
| balance charts) and allowing history\-aware data entry, interactive | balance charts) and allowing history-aware data entry, interactive | ||||||
| searching, and bookmarking. | searching, and bookmarking. | ||||||
| .PP | .PP | ||||||
| hledger\-web also lets you share a ledger with multiple users, or even | hledger-web also lets you share a ledger with multiple users, or even | ||||||
| the public web. | the public web. | ||||||
| There is no access control, so if you need that you should put it behind | There is no access control, so if you need that you should put it behind | ||||||
| a suitable web proxy. | a suitable web proxy. | ||||||
| @ -37,201 +37,135 @@ instance, it writes a numbered backup of the main journal file (only ?) | |||||||
| on every edit. | on every edit. | ||||||
| .PP | .PP | ||||||
| Like hledger, it reads data from one or more files in hledger journal, | Like hledger, it reads data from one or more files in hledger journal, | ||||||
| timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or | timeclock, timedot, or CSV format specified with \f[C]-f\f[R], or | ||||||
| \f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows, | \f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows, | ||||||
| perhaps \f[C]C:/Users/USER/.hledger.journal\f[]). | perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| For more about this see hledger(1), hledger_journal(5) etc. | For more about this see hledger(1), hledger_journal(5) etc. | ||||||
| .SH OPTIONS | .SH OPTIONS | ||||||
| .PP | .PP | ||||||
| Command\-line options and arguments may be used to set an initial filter | Command-line options and arguments may be used to set an initial filter | ||||||
| on the data. | on the data. | ||||||
| These filter options are not shown in the web UI, but it will be applied | These filter options are not shown in the web UI, but it will be applied | ||||||
| in addition to any search query entered there. | in addition to any search query entered there. | ||||||
| .PP | .PP | ||||||
| Note: if invoking hledger\-web as a hledger subcommand, write | Note: if invoking hledger-web as a hledger subcommand, write | ||||||
| \f[C]\-\-\f[] before options, as shown in the synopsis above. | \f[C]--\f[R] before options, as shown in the synopsis above. | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-serve\f[] | .B \f[C]--serve\f[R] | ||||||
| serve and log requests, don\[aq]t browse or auto\-exit | serve and log requests, don\[aq]t browse or auto-exit | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-host=IPADDR\f[] | .B \f[C]--host=IPADDR\f[R] | ||||||
| listen on this IP address (default: 127.0.0.1) | listen on this IP address (default: 127.0.0.1) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-port=PORT\f[] | .B \f[C]--port=PORT\f[R] | ||||||
| listen on this TCP port (default: 5000) | listen on this TCP port (default: 5000) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-base\-url=URL\f[] | .B \f[C]--base-url=URL\f[R] | ||||||
| set the base url (default: http://IPADDR:PORT). | set the base url (default: http://IPADDR:PORT). | ||||||
| You would change this when sharing over the network, or integrating | You would change this when sharing over the network, or integrating | ||||||
| within a larger website. | within a larger website. | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-file\-url=URL\f[] | .B \f[C]--file-url=URL\f[R] | ||||||
| set the static files url (default: BASEURL/static). | set the static files url (default: BASEURL/static). | ||||||
| hledger\-web normally serves static files itself, but if you wanted to | hledger-web normally serves static files itself, but if you wanted to | ||||||
| serve them from another server for efficiency, you would set the url | serve them from another server for efficiency, you would set the url | ||||||
| with this. | with this. | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-capabilities=CAP[,CAP..]\f[] | .B \f[C]--capabilities=CAP[,CAP..]\f[R] | ||||||
| enable the view, add, and/or manage capabilities (default: view,add) | enable the view, add, and/or manage capabilities (default: view,add) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-capabilities\-header=HTTPHEADER\f[] | .B \f[C]--capabilities-header=HTTPHEADER\f[R] | ||||||
| read capabilities to enable from a HTTP header, like | read capabilities to enable from a HTTP header, like | ||||||
| X\-Sandstorm\-Permissions (default: disabled) | X-Sandstorm-Permissions (default: disabled) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .PP | .PP | ||||||
| hledger input options: | hledger input options: | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-f\ FILE\ \-\-file=FILE\f[] | .B \f[C]-f FILE --file=FILE\f[R] | ||||||
| use a different input file. | use a different input file. | ||||||
| For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or | For stdin, use - (default: \f[C]$LEDGER_FILE\f[R] or | ||||||
| \f[C]$HOME/.hledger.journal\f[]) | \f[C]$HOME/.hledger.journal\f[R]) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-rules\-file=RULESFILE\f[] | .B \f[C]--rules-file=RULESFILE\f[R] | ||||||
| Conversion rules file to use when reading CSV (default: FILE.rules) | Conversion rules file to use when reading CSV (default: FILE.rules) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-separator=CHAR\f[] | .B \f[C]--separator=CHAR\f[R] | ||||||
| Field separator to expect when reading CSV (default: \[aq],\[aq]) | Field separator to expect when reading CSV (default: \[aq],\[aq]) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-alias=OLD=NEW\f[] | .B \f[C]--alias=OLD=NEW\f[R] | ||||||
| rename accounts named OLD to NEW | rename accounts named OLD to NEW | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-anon\f[] | .B \f[C]--anon\f[R] | ||||||
| anonymize accounts and payees | anonymize accounts and payees | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-pivot\ FIELDNAME\f[] | .B \f[C]--pivot FIELDNAME\f[R] | ||||||
| use some other field or tag for the account name | use some other field or tag for the account name | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-I\ \-\-ignore\-assertions\f[] | .B \f[C]-I --ignore-assertions\f[R] | ||||||
| ignore any failing balance assertions | ignore any failing balance assertions | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .PP | .PP | ||||||
| hledger reporting options: | hledger reporting options: | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-b\ \-\-begin=DATE\f[] | .B \f[C]-b --begin=DATE\f[R] | ||||||
| include postings/txns on or after this date | include postings/txns on or after this date | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-e\ \-\-end=DATE\f[] | .B \f[C]-e --end=DATE\f[R] | ||||||
| include postings/txns before this date | include postings/txns before this date | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-D\ \-\-daily\f[] | .B \f[C]-D --daily\f[R] | ||||||
| multiperiod/multicolumn report by day | multiperiod/multicolumn report by day | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-W\ \-\-weekly\f[] | .B \f[C]-W --weekly\f[R] | ||||||
| multiperiod/multicolumn report by week | multiperiod/multicolumn report by week | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-M\ \-\-monthly\f[] | .B \f[C]-M --monthly\f[R] | ||||||
| multiperiod/multicolumn report by month | multiperiod/multicolumn report by month | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-Q\ \-\-quarterly\f[] | .B \f[C]-Q --quarterly\f[R] | ||||||
| multiperiod/multicolumn report by quarter | multiperiod/multicolumn report by quarter | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-Y\ \-\-yearly\f[] | .B \f[C]-Y --yearly\f[R] | ||||||
| multiperiod/multicolumn report by year | multiperiod/multicolumn report by year | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-p\ \-\-period=PERIODEXP\f[] | .B \f[C]-p --period=PERIODEXP\f[R] | ||||||
| set start date, end date, and/or reporting interval all at once using | set start date, end date, and/or reporting interval all at once using | ||||||
| period expressions syntax (overrides the flags above) | period expressions syntax (overrides the flags above) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-date2\f[] | .B \f[C]--date2\f[R] | ||||||
| match the secondary date instead (see command help for other effects) | match the secondary date instead (see command help for other effects) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-U\ \-\-unmarked\f[] | .B \f[C]-U --unmarked\f[R] | ||||||
| include only unmarked postings/txns (can combine with \-P or \-C) | include only unmarked postings/txns (can combine with -P or -C) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-P\ \-\-pending\f[] | .B \f[C]-P --pending\f[R] | ||||||
| include only pending postings/txns | include only pending postings/txns | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-C\ \-\-cleared\f[] | .B \f[C]-C --cleared\f[R] | ||||||
| include only cleared postings/txns | include only cleared postings/txns | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-R\ \-\-real\f[] | .B \f[C]-R --real\f[R] | ||||||
| include only non\-virtual postings | include only non-virtual postings | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-NUM\ \-\-depth=NUM\f[] | .B \f[C]-NUM --depth=NUM\f[R] | ||||||
| hide/aggregate accounts or postings more than NUM levels deep | hide/aggregate accounts or postings more than NUM levels deep | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-E\ \-\-empty\f[] | .B \f[C]-E --empty\f[R] | ||||||
| show items with zero amount, normally hidden (and vice\-versa in | show items with zero amount, normally hidden (and vice-versa in | ||||||
| hledger\-ui/hledger\-web) | hledger-ui/hledger-web) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-B\ \-\-cost\f[] | .B \f[C]-B --cost\f[R] | ||||||
| convert amounts to their cost at transaction time (using the transaction | convert amounts to their cost at transaction time (using the transaction | ||||||
| price, if any) | price, if any) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-V\ \-\-value\f[] | .B \f[C]-V --value\f[R] | ||||||
| convert amounts to their market value on the report end date (using the | convert amounts to their market value on the report end date (using the | ||||||
| most recent applicable market price, if any) | most recent applicable market price, if any) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-auto\f[] | .B \f[C]--auto\f[R] | ||||||
| apply automated posting rules to modify transactions. | apply automated posting rules to modify transactions. | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-forecast\f[] | .B \f[C]--forecast\f[R] | ||||||
| apply periodic transaction rules to generate future transactions, to 6 | apply periodic transaction rules to generate future transactions, to 6 | ||||||
| months from now or report end date. | months from now or report end date. | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .PP | .PP | ||||||
| When a reporting option appears more than once in the command line, the | When a reporting option appears more than once in the command line, the | ||||||
| last one takes precedence. | last one takes precedence. | ||||||
| @ -240,59 +174,53 @@ Some reporting options can also be written as query arguments. | |||||||
| .PP | .PP | ||||||
| hledger help options: | hledger help options: | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-h\ \-\-help\f[] | .B \f[C]-h --help\f[R] | ||||||
| show general usage (or after COMMAND, command usage) | show general usage (or after COMMAND, command usage) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-version\f[] | .B \f[C]--version\f[R] | ||||||
| show version | show version | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .TP | .TP | ||||||
| .B \f[C]\-\-debug[=N]\f[] | .B \f[C]--debug[=N]\f[R] | ||||||
| show debug output (levels 1\-9, default: 1) | show debug output (levels 1-9, default: 1) | ||||||
| .RS |  | ||||||
| .RE |  | ||||||
| .PP | .PP | ||||||
| A \@FILE argument will be expanded to the contents of FILE, which should | A \[at]FILE argument will be expanded to the contents of FILE, which | ||||||
| contain one command line option/argument per line. | should contain one command line option/argument per line. | ||||||
| (To prevent this, insert a \f[C]\-\-\f[] argument before.) | (To prevent this, insert a \f[C]--\f[R] argument before.) | ||||||
| .PP | .PP | ||||||
| By default, hledger\-web starts the web app in "transient mode" and also | By default, hledger-web starts the web app in \[dq]transient mode\[dq] | ||||||
| opens it in your default web browser if possible. | and also opens it in your default web browser if possible. | ||||||
| In this mode the web app will keep running for as long as you have it | In this mode the web app will keep running for as long as you have it | ||||||
| open in a browser window, and will exit after two minutes of inactivity | open in a browser window, and will exit after two minutes of inactivity | ||||||
| (no requests and no browser windows viewing it). | (no requests and no browser windows viewing it). | ||||||
| With \f[C]\-\-serve\f[], it just runs the web app without exiting, and | With \f[C]--serve\f[R], it just runs the web app without exiting, and | ||||||
| logs requests to the console. | logs requests to the console. | ||||||
| .PP | .PP | ||||||
| By default the server listens on IP address 127.0.0.1, accessible only | By default the server listens on IP address 127.0.0.1, accessible only | ||||||
| to local requests. | to local requests. | ||||||
| You can use \f[C]\-\-host\f[] to change this, eg | You can use \f[C]--host\f[R] to change this, eg \f[C]--host 0.0.0.0\f[R] | ||||||
| \f[C]\-\-host\ 0.0.0.0\f[] to listen on all configured addresses. | to listen on all configured addresses. | ||||||
| .PP | .PP | ||||||
| Similarly, use \f[C]\-\-port\f[] to set a TCP port other than 5000, eg | Similarly, use \f[C]--port\f[R] to set a TCP port other than 5000, eg if | ||||||
| if you are running multiple hledger\-web instances. | you are running multiple hledger-web instances. | ||||||
| .PP | .PP | ||||||
| You can use \f[C]\-\-base\-url\f[] to change the protocol, hostname, | You can use \f[C]--base-url\f[R] to change the protocol, hostname, port | ||||||
| port and path that appear in hyperlinks, useful eg for integrating | and path that appear in hyperlinks, useful eg for integrating | ||||||
| hledger\-web within a larger website. | hledger-web within a larger website. | ||||||
| The default is \f[C]http://HOST:PORT/\f[] using the server\[aq]s | The default is \f[C]http://HOST:PORT/\f[R] using the server\[aq]s | ||||||
| configured host address and TCP port (or \f[C]http://HOST\f[] if PORT is | configured host address and TCP port (or \f[C]http://HOST\f[R] if PORT | ||||||
| 80). | is 80). | ||||||
| .PP | .PP | ||||||
| With \f[C]\-\-file\-url\f[] you can set a different base url for static | With \f[C]--file-url\f[R] you can set a different base url for static | ||||||
| files, eg for better caching or cookie\-less serving on high performance | files, eg for better caching or cookie-less serving on high performance | ||||||
| websites. | websites. | ||||||
| .SH PERMISSIONS | .SH PERMISSIONS | ||||||
| .PP | .PP | ||||||
| By default, hledger\-web allows anyone who can reach it to view the | By default, hledger-web allows anyone who can reach it to view the | ||||||
| journal and to add new transactions, but not to change existing data. | journal and to add new transactions, but not to change existing data. | ||||||
| .PP | .PP | ||||||
| You can restrict who can reach it by | You can restrict who can reach it by | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| setting the IP address it listens on (see \f[C]\-\-host\f[] above). | setting the IP address it listens on (see \f[C]--host\f[R] above). | ||||||
| By default it listens on 127.0.0.1, accessible to all users on the local | By default it listens on 127.0.0.1, accessible to all users on the local | ||||||
| machine. | machine. | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| @ -302,56 +230,59 @@ custom firewall rules | |||||||
| .PP | .PP | ||||||
| You can restrict what the users who reach it can do, by | You can restrict what the users who reach it can do, by | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| using the \f[C]\-\-capabilities=CAP[,CAP..]\f[] flag when you start it, | using the \f[C]--capabilities=CAP[,CAP..]\f[R] flag when you start it, | ||||||
| enabling one or more of the following capabilities. | enabling one or more of the following capabilities. | ||||||
| The default value is \f[C]view,add\f[]: | The default value is \f[C]view,add\f[R]: | ||||||
| .RS 2 | .RS 2 | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| \f[C]view\f[] \- allows viewing the journal file and all included files | \f[C]view\f[R] - allows viewing the journal file and all included files | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| \f[C]add\f[] \- allows adding new transactions to the main journal file | \f[C]add\f[R] - allows adding new transactions to the main journal file | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| \f[C]manage\f[] \- allows editing, uploading or downloading the main or | \f[C]manage\f[R] - allows editing, uploading or downloading the main or | ||||||
| included files | included files | ||||||
| .RE | .RE | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| using the \f[C]\-\-capabilities\-header=HTTPHEADER\f[] flag to specify a | using the \f[C]--capabilities-header=HTTPHEADER\f[R] flag to specify a | ||||||
| HTTP header from which it will read capabilities to enable. | HTTP header from which it will read capabilities to enable. | ||||||
| hledger\-web on Sandstorm uses the X\-Sandstorm\-Permissions header to | hledger-web on Sandstorm uses the X-Sandstorm-Permissions header to | ||||||
| integrate with Sandstorm\[aq]s permissions. | integrate with Sandstorm\[aq]s permissions. | ||||||
| This is disabled by default. | This is disabled by default. | ||||||
| .SH EDITING, UPLOADING, DOWNLOADING | .SH EDITING, UPLOADING, DOWNLOADING | ||||||
| .PP | .PP | ||||||
| If you enable the \f[C]manage\f[] capability mentioned above, you\[aq]ll | If you enable the \f[C]manage\f[R] capability mentioned above, | ||||||
| see a new "spanner" button to the right of the search form. | you\[aq]ll see a new \[dq]spanner\[dq] button to the right of the search | ||||||
|  | form. | ||||||
| Clicking this will let you edit, upload, or download the journal file or | Clicking this will let you edit, upload, or download the journal file or | ||||||
| any files it includes. | any files it includes. | ||||||
| .PP | .PP | ||||||
| Note, unlike any other hledger command, in this mode you (or any | Note, unlike any other hledger command, in this mode you (or any | ||||||
| visitor) can alter or wipe the data files. | visitor) can alter or wipe the data files. | ||||||
| .PP | .PP | ||||||
| Normally whenever a file is changed in this way, hledger\-web saves a | Normally whenever a file is changed in this way, hledger-web saves a | ||||||
| numbered backup (assuming file permissions allow it, the disk is not | numbered backup (assuming file permissions allow it, the disk is not | ||||||
| full, etc.) hledger\-web is not aware of version control systems, | full, etc.) hledger-web is not aware of version control systems, | ||||||
| currently; if you use one, you\[aq]ll have to arrange to commit the | currently; if you use one, you\[aq]ll have to arrange to commit the | ||||||
| changes yourself (eg with a cron job or a file watcher like entr). | changes yourself (eg with a cron job or a file watcher like entr). | ||||||
| .PP | .PP | ||||||
| Changes which would leave the journal file(s) unparseable or non\-valid | Changes which would leave the journal file(s) unparseable or non-valid | ||||||
| (eg with failing balance assertions) are prevented. | (eg with failing balance assertions) are prevented. | ||||||
| (Probably. | (Probably. | ||||||
| This needs re\-testing.) | This needs re-testing.) | ||||||
| .SH RELOADING | .SH RELOADING | ||||||
| .PP | .PP | ||||||
| hledger\-web detects changes made to the files by other means (eg if you | hledger-web detects changes made to the files by other means (eg if you | ||||||
| edit it directly, outside of hledger\-web), and it will show the new | edit it directly, outside of hledger-web), and it will show the new data | ||||||
| data when you reload the page or navigate to a new page. | when you reload the page or navigate to a new page. | ||||||
| If a change makes a file unparseable, hledger\-web will display an error | If a change makes a file unparseable, hledger-web will display an error | ||||||
| message until the file has been fixed. | message until the file has been fixed. | ||||||
| .SH JSON API | .SH JSON API | ||||||
| .PP | .PP | ||||||
| In addition to the web UI, hledger\-web provides some JSON API routes. | In addition to the web UI, hledger-web provides some API routes that | ||||||
| These are similar to the API provided by the hledger\-api tool, but it | serve JSON in response to GET requests. | ||||||
| may be convenient to have them in hledger\-web also. | Currently these are same ones provided by the hledger-api tool, but | ||||||
|  | hledger-web will likely receive more attention than hledger-api in | ||||||
|  | future: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| @ -361,31 +292,65 @@ may be convenient to have them in hledger\-web also. | |||||||
| /commodities | /commodities | ||||||
| /accounts | /accounts | ||||||
| /accounttransactions/#AccountName | /accounttransactions/#AccountName | ||||||
| \f[] | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | Also, you can append a new transaction to the journal by sending a PUT | ||||||
|  | request to \f[C]/add\f[R] (hledger-web only). | ||||||
|  | As with the web UI\[aq]s add form, hledger-web must be started with the | ||||||
|  | \f[C]add\f[R] capability for this (enabled by default). | ||||||
|  | .PP | ||||||
|  | The payload should be a valid hledger transaction as JSON, similar to | ||||||
|  | what you get from \f[C]/transactions\f[R] or | ||||||
|  | \f[C]/accounttransactions\f[R]. | ||||||
|  | .PP | ||||||
|  | Another way to generate test data is with the | ||||||
|  | \f[C]readJsonFile\f[R]/\f[C]writeJsonFile\f[R] helpers in | ||||||
|  | Hledger.Web.Json, which read or write any of hledger\[aq]s JSON-capable | ||||||
|  | types from or to a file. | ||||||
|  | Eg here we write the first transaction of a sample journal: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | $ make ghci-web | ||||||
|  | >>> :m +*Hledger.Web.Json | ||||||
|  | >>> writeJsonFile \[dq]txn.json\[dq] (head $ jtxns samplejournal) | ||||||
|  | >>> :q | ||||||
|  | $ python -m json.tool <txn.json >txn.pretty.json  # optional: make human-readable | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | (sample output & discussion) | ||||||
|  | .PP | ||||||
|  | And here\[aq]s how to test adding that with curl: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | $ curl -s http://127.0.0.1:5000/add -X PUT -H \[aq]Content-Type: application/json\[aq] --data-binary \[at]txn.pretty.json; echo | ||||||
|  | \f[R] | ||||||
| .fi | .fi | ||||||
| .SH ENVIRONMENT | .SH ENVIRONMENT | ||||||
| .PP | .PP | ||||||
| \f[B]LEDGER_FILE\f[] The journal file path when not specified with | \f[B]LEDGER_FILE\f[R] The journal file path when not specified with | ||||||
| \f[C]\-f\f[]. | \f[C]-f\f[R]. | ||||||
| Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps | Default: \f[C]\[ti]/.hledger.journal\f[R] (on windows, perhaps | ||||||
| \f[C]C:/Users/USER/.hledger.journal\f[]). | \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| .SH FILES | .SH FILES | ||||||
| .PP | .PP | ||||||
| Reads data from one or more files in hledger journal, timeclock, | Reads data from one or more files in hledger journal, timeclock, | ||||||
| timedot, or CSV format specified with \f[C]\-f\f[], or | timedot, or CSV format specified with \f[C]-f\f[R], or | ||||||
| \f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows, | \f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows, | ||||||
| perhaps \f[C]C:/Users/USER/.hledger.journal\f[]). | perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]). | ||||||
| .SH BUGS | .SH BUGS | ||||||
| .PP | .PP | ||||||
| The need to precede options with \f[C]\-\-\f[] when invoked from hledger | The need to precede options with \f[C]--\f[R] when invoked from hledger | ||||||
| is awkward. | is awkward. | ||||||
| .PP | .PP | ||||||
| \f[C]\-f\-\f[] doesn\[aq]t work (hledger\-web can\[aq]t read from | \f[C]-f-\f[R] doesn\[aq]t work (hledger-web can\[aq]t read from stdin). | ||||||
| stdin). |  | ||||||
| .PP | .PP | ||||||
| Query arguments and some hledger options are ignored. | Query arguments and some hledger options are ignored. | ||||||
| .PP | .PP | ||||||
| Does not work in text\-mode browsers. | Does not work in text-mode browsers. | ||||||
| .PP | .PP | ||||||
| Does not work well on small screens. | Does not work well on small screens. | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,8 +3,8 @@ This is hledger-web.info, produced by makeinfo version 6.5 from stdin. | |||||||
|  |  | ||||||
| File: hledger-web.info,  Node: Top,  Next: OPTIONS,  Up: (dir) | File: hledger-web.info,  Node: Top,  Next: OPTIONS,  Up: (dir) | ||||||
| 
 | 
 | ||||||
| hledger-web(1) hledger-web 1.14 | hledger-web(1) hledger-web 1.14.99 | ||||||
| ******************************* | ********************************** | ||||||
| 
 | 
 | ||||||
| hledger-web is hledger's web interface.  It starts a simple web | hledger-web is hledger's web interface.  It starts a simple web | ||||||
| application for browsing and adding transactions, and optionally opens | application for browsing and adding transactions, and optionally opens | ||||||
| @ -25,6 +25,7 @@ journal, timeclock, timedot, or CSV format specified with '-f', or | |||||||
| '$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps | '$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps | ||||||
| 'C:/Users/USER/.hledger.journal').  For more about this see hledger(1), | 'C:/Users/USER/.hledger.journal').  For more about this see hledger(1), | ||||||
| hledger_journal(5) etc. | hledger_journal(5) etc. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * OPTIONS:: | * OPTIONS:: | ||||||
| @ -287,9 +288,10 @@ File: hledger-web.info,  Node: JSON API,  Prev: RELOADING,  Up: Top | |||||||
| 5 JSON API | 5 JSON API | ||||||
| ********** | ********** | ||||||
| 
 | 
 | ||||||
| In addition to the web UI, hledger-web provides some JSON API routes. | In addition to the web UI, hledger-web provides some API routes that | ||||||
| These are similar to the API provided by the hledger-api tool, but it | serve JSON in response to GET requests.  Currently these are same ones | ||||||
| may be convenient to have them in hledger-web also. | provided by the hledger-api tool, but hledger-web will likely receive | ||||||
|  | more attention than hledger-api in future: | ||||||
| 
 | 
 | ||||||
| /accountnames | /accountnames | ||||||
| /transactions | /transactions | ||||||
| @ -298,18 +300,43 @@ may be convenient to have them in hledger-web also. | |||||||
| /accounts | /accounts | ||||||
| /accounttransactions/#AccountName | /accounttransactions/#AccountName | ||||||
| 
 | 
 | ||||||
|  |    Also, you can append a new transaction to the journal by sending a | ||||||
|  | PUT request to '/add' (hledger-web only).  As with the web UI's add | ||||||
|  | form, hledger-web must be started with the 'add' capability for this | ||||||
|  | (enabled by default). | ||||||
|  | 
 | ||||||
|  |    The payload should be a valid hledger transaction as JSON, similar to | ||||||
|  | what you get from '/transactions' or '/accounttransactions'. | ||||||
|  | 
 | ||||||
|  |    Another way to generate test data is with the | ||||||
|  | 'readJsonFile'/'writeJsonFile' helpers in Hledger.Web.Json, which read | ||||||
|  | or write any of hledger's JSON-capable types from or to a file.  Eg here | ||||||
|  | we write the first transaction of a sample journal: | ||||||
|  | 
 | ||||||
|  | $ make ghci-web | ||||||
|  | >>> :m +*Hledger.Web.Json | ||||||
|  | >>> writeJsonFile "txn.json" (head $ jtxns samplejournal) | ||||||
|  | >>> :q | ||||||
|  | $ python -m json.tool <txn.json >txn.pretty.json  # optional: make human-readable | ||||||
|  | 
 | ||||||
|  |    (sample output & discussion) | ||||||
|  | 
 | ||||||
|  |    And here's how to test adding that with curl: | ||||||
|  | 
 | ||||||
|  | $ curl -s http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.pretty.json; echo | ||||||
|  | 
 | ||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top72 | Node: Top72 | ||||||
| Node: OPTIONS1354 | Node: OPTIONS1361 | ||||||
| Ref: #options1459 | Ref: #options1466 | ||||||
| Node: PERMISSIONS6549 | Node: PERMISSIONS6556 | ||||||
| Ref: #permissions6688 | Ref: #permissions6695 | ||||||
| Node: EDITING UPLOADING DOWNLOADING7900 | Node: EDITING UPLOADING DOWNLOADING7907 | ||||||
| Ref: #editing-uploading-downloading8081 | Ref: #editing-uploading-downloading8088 | ||||||
| Node: RELOADING8915 | Node: RELOADING8922 | ||||||
| Ref: #reloading9049 | Ref: #reloading9056 | ||||||
| Node: JSON API9359 | Node: JSON API9366 | ||||||
| Ref: #json-api9453 | Ref: #json-api9460 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
| @ -187,8 +187,8 @@ OPTIONS | |||||||
|        without exiting, and logs requests to the console. |        without exiting, and logs requests to the console. | ||||||
| 
 | 
 | ||||||
|        By  default the server listens on IP address 127.0.0.1, accessible only |        By  default the server listens on IP address 127.0.0.1, accessible only | ||||||
|        to  local  requests.   You  can  use  --host   to   change   this,   eg |        to local requests.  You can  use  --host  to  change  this,  eg  --host | ||||||
|        --host 0.0.0.0 to listen on all configured addresses. |        0.0.0.0 to listen on all configured addresses. | ||||||
| 
 | 
 | ||||||
|        Similarly,  use --port to set a TCP port other than 5000, eg if you are |        Similarly,  use --port to set a TCP port other than 5000, eg if you are | ||||||
|        running multiple hledger-web instances. |        running multiple hledger-web instances. | ||||||
| @ -260,9 +260,10 @@ RELOADING | |||||||
|        until the file has been fixed. |        until the file has been fixed. | ||||||
| 
 | 
 | ||||||
| JSON API | JSON API | ||||||
|        In addition to the web UI, hledger-web provides some JSON  API  routes. |        In addition to the web UI, hledger-web provides some  API  routes  that | ||||||
|        These  are  similar to the API provided by the hledger-api tool, but it |        serve  JSON in response to GET requests.  Currently these are same ones | ||||||
|        may be convenient to have them in hledger-web also. |        provided by the hledger-api tool, but hledger-web will  likely  receive | ||||||
|  |        more attention than hledger-api in future: | ||||||
| 
 | 
 | ||||||
|               /accountnames |               /accountnames | ||||||
|               /transactions |               /transactions | ||||||
| @ -271,6 +272,31 @@ JSON API | |||||||
|               /accounts |               /accounts | ||||||
|               /accounttransactions/#AccountName |               /accounttransactions/#AccountName | ||||||
| 
 | 
 | ||||||
|  |        Also,  you can append a new transaction to the journal by sending a PUT | ||||||
|  |        request to /add (hledger-web only).  As with the  web  UI's  add  form, | ||||||
|  |        hledger-web  must  be started with the add capability for this (enabled | ||||||
|  |        by default). | ||||||
|  | 
 | ||||||
|  |        The payload should be a valid hledger transaction as JSON,  similar  to | ||||||
|  |        what you get from /transactions or /accounttransactions. | ||||||
|  | 
 | ||||||
|  |        Another  way  to generate test data is with the readJsonFile/writeJson- | ||||||
|  |        File helpers in Hledger.Web.Json, which read or write any of  hledger's | ||||||
|  |        JSON-capable  types  from  or  to  a  file.  Eg here we write the first | ||||||
|  |        transaction of a sample journal: | ||||||
|  | 
 | ||||||
|  |               $ make ghci-web | ||||||
|  |               >>> :m +*Hledger.Web.Json | ||||||
|  |               >>> writeJsonFile "txn.json" (head $ jtxns samplejournal) | ||||||
|  |               >>> :q | ||||||
|  |               $ python -m json.tool <txn.json >txn.pretty.json  # optional: make human-readable | ||||||
|  | 
 | ||||||
|  |        (sample output & discussion) | ||||||
|  | 
 | ||||||
|  |        And here's how to test adding that with curl: | ||||||
|  | 
 | ||||||
|  |               $ curl -s http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.pretty.json; echo | ||||||
|  | 
 | ||||||
| ENVIRONMENT | ENVIRONMENT | ||||||
|        LEDGER_FILE The journal file path when not specified with -f.  Default: |        LEDGER_FILE The journal file path when not specified with -f.  Default: | ||||||
|        ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour- |        ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour- | ||||||
| @ -319,4 +345,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger-web 1.14                  March 2019                    hledger-web(1) | hledger-web 1.14.99               March 2019                    hledger-web(1) | ||||||
|  | |||||||
							
								
								
									
										2850
									
								
								hledger/hledger.1
									
									
									
									
									
								
							
							
						
						
									
										2850
									
								
								hledger/hledger.1
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -3,8 +3,8 @@ This is hledger.info, produced by makeinfo version 6.5 from stdin. | |||||||
|  |  | ||||||
| File: hledger.info,  Node: Top,  Next: EXAMPLES,  Up: (dir) | File: hledger.info,  Node: Top,  Next: EXAMPLES,  Up: (dir) | ||||||
| 
 | 
 | ||||||
| hledger(1) hledger 1.14.1 | hledger(1) hledger 1.14.99 | ||||||
| ************************* | ************************** | ||||||
| 
 | 
 | ||||||
| This is hledger's command-line interface (there are also curses and web | This is hledger's command-line interface (there are also curses and web | ||||||
| interfaces).  Its basic function is to read a plain text file describing | interfaces).  Its basic function is to read a plain text file describing | ||||||
| @ -40,6 +40,7 @@ hledger never changes existing transactions. | |||||||
| '~/.hledger.journal', or run 'hledger add' and follow the prompts.  Then | '~/.hledger.journal', or run 'hledger add' and follow the prompts.  Then | ||||||
| try some commands like 'hledger print' or 'hledger balance'.  Run | try some commands like 'hledger print' or 'hledger balance'.  Run | ||||||
| 'hledger' with no arguments for a list of commands. | 'hledger' with no arguments for a list of commands. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * EXAMPLES:: | * EXAMPLES:: | ||||||
| @ -131,7 +132,7 @@ File: hledger.info,  Node: OPTIONS,  Next: QUERIES,  Prev: EXAMPLES,  Up: Top | |||||||
| * Pivoting:: | * Pivoting:: | ||||||
| * Cost:: | * Cost:: | ||||||
| * Market value:: | * Market value:: | ||||||
| * Combining -B and -V:: | * Combining -B -V --value:: | ||||||
| * Output destination:: | * Output destination:: | ||||||
| * Output format:: | * Output format:: | ||||||
| * Regular expressions:: | * Regular expressions:: | ||||||
| @ -303,6 +304,7 @@ characters.  Eg: | |||||||
| 
 | 
 | ||||||
|    'hledger register -p 'last year' "accounts receivable |    'hledger register -p 'last year' "accounts receivable | ||||||
| (receivable|payable)" amt:\>100'. | (receivable|payable)" amt:\>100'. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * More escaping:: | * More escaping:: | ||||||
| @ -393,24 +395,38 @@ File: hledger.info,  Node: Unicode characters,  Next: Input files,  Prev: Comman | |||||||
| 2.7 Unicode characters | 2.7 Unicode characters | ||||||
| ====================== | ====================== | ||||||
| 
 | 
 | ||||||
| hledger is expected to handle unicode (non-ascii) characters, but this | hledger is expected to handle non-ascii characters correctly: | ||||||
| requires a well-configured environment. |  | ||||||
| 
 | 
 | ||||||
|    To handle unicode characters in the command line or input data, a |    * they should be parsed correctly in input files and on the command | ||||||
| system locale that can decode them must be configured (POSIX's default |      line, by all hledger tools (add, iadd, hledger-web's | ||||||
| 'C' locale will not work).  Eg in bash, you could do: |      search/add/edit forms, etc.) | ||||||
| 
 | 
 | ||||||
| export LANG=en_US.UTF-8 |    * they should be displayed correctly by all hledger tools, and | ||||||
|  |      on-screen alignment should be preserved. | ||||||
| 
 | 
 | ||||||
|    See Troubleshooting for more about this. |    This requires a well-configured environment.  Here are some tips: | ||||||
| 
 | 
 | ||||||
|    Unicode characters should appear correctly in hledger's output.  For |    * A system locale must be configured, and it must be one that can | ||||||
| the hledger and hledger-ui tools, this requires that |      decode the characters being used.  In bash, you can set a locale | ||||||
|  |      like this: 'export LANG=en_US.UTF-8'.  There are some more details | ||||||
|  |      in Troubleshooting.  This step is essential - without it, hledger | ||||||
|  |      will quit on encountering a non-ascii character (as with all | ||||||
|  |      GHC-compiled programs). | ||||||
| 
 | 
 | ||||||
|    * your terminal supports unicode |    * your terminal software (eg Terminal.app, iTerm, CMD.exe, xterm..) | ||||||
|    * the terminal's font includes the required unicode glyphs |      must support unicode | ||||||
|    * the terminal is configured to display "wide" characters as double | 
 | ||||||
|      width (otherwise report alignment will be off) |    * the terminal must be using a font which includes the required | ||||||
|  |      unicode glyphs | ||||||
|  | 
 | ||||||
|  |    * the terminal should be configured to display wide characters as | ||||||
|  |      double width (for report alignment) | ||||||
|  | 
 | ||||||
|  |    * on Windows, for best results you should run hledger in the same | ||||||
|  |      kind of environment in which it was built.  Eg hledger built in the | ||||||
|  |      standard CMD.EXE environment (like the binaries on our download | ||||||
|  |      page) might show display problems when run in a cygwin or msys | ||||||
|  |      terminal, and vice versa.  (See eg #961). | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: Input files,  Next: Smart dates,  Prev: Unicode characters,  Up: OPTIONS | File: hledger.info,  Node: Input files,  Next: Smart dates,  Prev: Unicode characters,  Up: OPTIONS | ||||||
| @ -729,22 +745,15 @@ The '-B/--cost' flag converts amounts to their cost at transaction time, | |||||||
| if they have a transaction price specified. | if they have a transaction price specified. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: Market value,  Next: Combining -B and -V,  Prev: Cost,  Up: OPTIONS | File: hledger.info,  Node: Market value,  Next: Combining -B -V --value,  Prev: Cost,  Up: OPTIONS | ||||||
| 
 | 
 | ||||||
| 2.16 Market value | 2.16 Market value | ||||||
| ================= | ================= | ||||||
| 
 | 
 | ||||||
| The '-V/--value' flag converts reported amounts to their current market | The '-V/--market' flag converts reported amounts to their market value | ||||||
| value. | in another commodity.  It uses the commodity referenced in the latest | ||||||
| Specifically, when there is a market price (P directive) for the | market price (P directive) dated on or before the valuation date.  The | ||||||
| amount's commodity, dated on or before today's date (or the report end | default valuation date is today.  For example: | ||||||
| date if specified), the amount will be converted to the price's |  | ||||||
| commodity. |  | ||||||
| 
 |  | ||||||
|    When there are multiple applicable P directives, -V chooses the most |  | ||||||
| recent one, or in case of equal dates, the last-parsed one. |  | ||||||
| 
 |  | ||||||
|    For example: |  | ||||||
| 
 | 
 | ||||||
| # one euro is worth this many dollars from nov 1 | # one euro is worth this many dollars from nov 1 | ||||||
| P 2016/11/01 € $1.10 | P 2016/11/01 € $1.10 | ||||||
| @ -773,25 +782,211 @@ specified, defaults to today) | |||||||
| $ hledger -f t.j bal -N euros -V | $ hledger -f t.j bal -N euros -V | ||||||
|              $103.00  assets:euros |              $103.00  assets:euros | ||||||
| 
 | 
 | ||||||
|    Currently, hledger's -V only uses market prices recorded with P |    Ledger users: Ledger's -V also infers market prices from journal | ||||||
| directives, not transaction prices (unlike Ledger). | entries, but we don't do that.  hledger's -V uses only market prices | ||||||
|  | declared explicitly, with P directives.  (Mnemonic: -B/-cost uses | ||||||
|  | transaction prices, -V/-market uses market prices.) | ||||||
| 
 | 
 | ||||||
|    Currently, -V has a limitation in multicolumn balance reports: it | * Menu: | ||||||
| uses the market prices on the report end date for all columns.  (Instead | 
 | ||||||
| of the prices on each column's end date.) | * More control over valuation:: | ||||||
|  | * Effect of --value on reports:: | ||||||
|  | * Some useful value reports:: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: Combining -B and -V,  Next: Output destination,  Prev: Market value,  Up: OPTIONS | File: hledger.info,  Node: More control over valuation,  Next: Effect of --value on reports,  Up: Market value | ||||||
| 
 | 
 | ||||||
| 2.17 Combining -B and -V | 2.16.1 More control over valuation | ||||||
| ======================== | ---------------------------------- | ||||||
| 
 | 
 | ||||||
| Using -B/-cost and -V/-value together is currently allowed, but the | _(experimental, added 201905)_ | ||||||
| results are probably not meaningful.  Let us know if you find a use for | 
 | ||||||
| this. |    You can control valuation more precisely with the '--value' option. | ||||||
|  | 
 | ||||||
|  |  --value=TYPE   which type of valuation should be done ? cost|end|now|YYYY-MM-DD | ||||||
|  | 
 | ||||||
|  |    The argument is one of the keywords shown, or their first letter, or | ||||||
|  | a custom date.  The precise effect of the keywords is command-specific, | ||||||
|  | but here is their general meaning: | ||||||
|  | 
 | ||||||
|  | '--value=cost' (or 'c') | ||||||
|  | 
 | ||||||
|  |      Convert amounts to cost, using the prices recorded in transactions. | ||||||
|  |      '-B'/'--cost' does this. | ||||||
|  | '--value=end' (or 'e') | ||||||
|  | 
 | ||||||
|  |      Convert amounts to their value in default valuation commodity using | ||||||
|  |      market prices on the last day of the report period (or of each | ||||||
|  |      subperiod in a multiperiod report).  When no report period is | ||||||
|  |      specified, uses the journal's last transaction date. | ||||||
|  | '--value=now' (or 'n') | ||||||
|  | 
 | ||||||
|  |      Convert amounts to their value in default valuation commodity using | ||||||
|  |      current market prices (as of when report is generated). | ||||||
|  |      '-V'/'--market' does this. | ||||||
|  | '--value=YYYY-MM-DD' | ||||||
|  | 
 | ||||||
|  |      Convert amounts to their value in default valuation commodity using | ||||||
|  |      market prices on the given date (which must be 8 digits with '-' or | ||||||
|  |      '/' or '.' separators).  Eg '--value=2019-04-25'. | ||||||
|  | 
 | ||||||
|  |    Here are the effects of '--value' as seen with 'print': | ||||||
|  | 
 | ||||||
|  | P 2000-01-01 A  1 B | ||||||
|  | P 2000-02-01 A  2 B | ||||||
|  | P 2000-03-01 A  3 B | ||||||
|  | P 2000-04-01 A  4 B | ||||||
|  | 
 | ||||||
|  | 2000-01-01 | ||||||
|  |   (a)      1 A @ 5 B | ||||||
|  | 
 | ||||||
|  | 2000-02-01 | ||||||
|  |   (a)      1 A @ 6 B | ||||||
|  | 
 | ||||||
|  | 2000-03-01 | ||||||
|  |   (a)      1 A @ 7 B | ||||||
|  | 
 | ||||||
|  |    Show the cost of each posting: | ||||||
|  | 
 | ||||||
|  | $ hledger -f- print --value=cost | ||||||
|  | 2000/01/01 | ||||||
|  |     (a)             5 B | ||||||
|  | 
 | ||||||
|  | 2000/02/01 | ||||||
|  |     (a)             6 B | ||||||
|  | 
 | ||||||
|  | 2000/03/01 | ||||||
|  |     (a)             7 B | ||||||
|  | 
 | ||||||
|  |    Show the value as of the last day of the report period (2000-02-29): | ||||||
|  | 
 | ||||||
|  | $ hledger -f- print --value=end date:2000/01-2000/03 | ||||||
|  | 2000-01-01 | ||||||
|  |     (a)             2 B | ||||||
|  | 
 | ||||||
|  | 2000-02-01 | ||||||
|  |     (a)             2 B | ||||||
|  | 
 | ||||||
|  |    With no report period specified, that shows the value as of the last | ||||||
|  | day of the journal (2000-03-01): | ||||||
|  | 
 | ||||||
|  | $ hledger -f- print --value=end | ||||||
|  | 2000/01/01 | ||||||
|  |     (a)             3 B | ||||||
|  | 
 | ||||||
|  | 2000/02/01 | ||||||
|  |     (a)             3 B | ||||||
|  | 
 | ||||||
|  | 2000/03/01 | ||||||
|  |     (a)             3 B | ||||||
|  | 
 | ||||||
|  |    Show the current value (the 2000-04-01 price is still in effect | ||||||
|  | today): | ||||||
|  | 
 | ||||||
|  | $ hledger -f- print --value=now | ||||||
|  | 2000-01-01 | ||||||
|  |     (a)             4 B | ||||||
|  | 
 | ||||||
|  | 2000-02-01 | ||||||
|  |     (a)             4 B | ||||||
|  | 
 | ||||||
|  | 2000-03-01 | ||||||
|  |     (a)             4 B | ||||||
|  | 
 | ||||||
|  |    Show the value on 2000/01/15: | ||||||
|  | 
 | ||||||
|  | $ hledger -f- print --value=2000-01-15 | ||||||
|  | 2000/01/01 | ||||||
|  |     (a)             1 B | ||||||
|  | 
 | ||||||
|  | 2000/02/01 | ||||||
|  |     (a)             1 B | ||||||
|  | 
 | ||||||
|  | 2000/03/01 | ||||||
|  |     (a)             1 B | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: Output destination,  Next: Output format,  Prev: Combining -B and -V,  Up: OPTIONS | File: hledger.info,  Node: Effect of --value on reports,  Next: Some useful value reports,  Prev: More control over valuation,  Up: Market value | ||||||
|  | 
 | ||||||
|  | 2.16.2 Effect of -value on reports | ||||||
|  | ---------------------------------- | ||||||
|  | 
 | ||||||
|  | Below is how '--value' affects each of hledger's reports, currently. | ||||||
|  | You're not expected to remember all this, but when troubleshooting a | ||||||
|  | report, look here.  If you find problems - useless reports, misbehaving | ||||||
|  | reports, or error messages being printed - please report them (with | ||||||
|  | reproducible examples) eg at #329. | ||||||
|  | 
 | ||||||
|  | Report type   '--value'      '--value' 'end'            '--value' | ||||||
|  |               'cost'                                    'DATE'/'now'  | ||||||
|  | ---------------------------------------------------------------------------- | ||||||
|  | *print* | ||||||
|  | posting       cost, as       market value at report     market value at | ||||||
|  | amounts       recorded in    end                        DATE | ||||||
|  |               transaction | ||||||
|  | balance       show           show unvalued              show unvalued | ||||||
|  | assertions/assignmentsunvalued | ||||||
|  | *register* | ||||||
|  | starting      cost of        market value at day        market value at | ||||||
|  | balance       starting       before report start        DATE | ||||||
|  | with -H       balance | ||||||
|  | posting       cost           market value at report     market value at | ||||||
|  | amounts                      end                        DATE | ||||||
|  | posting       summarised     market value each          market value each | ||||||
|  | amounts,      cost           summary posting at         summary posting | ||||||
|  | multiperiod                  period end                 at DATE | ||||||
|  | running       sum/average    sum/average of the         sum/average of | ||||||
|  | total/average of the         displayed values           the displayed | ||||||
|  |               displayed                                 values | ||||||
|  |               values | ||||||
|  | *balance | ||||||
|  | (bs, cf, | ||||||
|  | is..)* | ||||||
|  | starting      costs of       market value at day        market value at | ||||||
|  | balances      starting       before report start of     DATE of sum of | ||||||
|  | with -H       balances       sum of previous postings   previous postings | ||||||
|  | balances,     summed costs   market value at period     market value at | ||||||
|  | simple                       end of sum of postings     DATE of sum of | ||||||
|  | balance                                                 postings | ||||||
|  | report | ||||||
|  | balances,     summed costs   market value at period     market value at | ||||||
|  | multiperiod                  end of sum of postings     DATE of sum of | ||||||
|  | report                                                  postings | ||||||
|  | budget        costs of       budget-setting periodic    budget-setting | ||||||
|  | amounts       budget         txns are valued at         periodic txns are | ||||||
|  | with          amounts        period end                 valued at DATE | ||||||
|  | -budget | ||||||
|  | column/row/grandsum/average  market value at period     market value at | ||||||
|  | totals/averagesof the        end of sum/average of      DATE of | ||||||
|  |               displayed      postings                   sum/average of | ||||||
|  |               values                                    postings | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: Some useful value reports,  Prev: Effect of --value on reports,  Up: Market value | ||||||
|  | 
 | ||||||
|  | 2.16.3 Some useful value reports | ||||||
|  | -------------------------------- | ||||||
|  | 
 | ||||||
|  | Here are some probably useful reports - please send suggestions if you | ||||||
|  | find out more: | ||||||
|  | 
 | ||||||
|  | Command:          Description of report:       Could answer: | ||||||
|  | --------------------------------------------------------------------------- | ||||||
|  | 'hledger bs -M    Monthly historical value     How are my investments | ||||||
|  | --value=p'        of assets/liabilities        performing ? | ||||||
|  | 'hledger is -M    Monthly contemporaneous      How much foreign currency | ||||||
|  | --value=t'        value of revenues/expenses   have I been spending ? | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: Combining -B -V --value,  Next: Output destination,  Prev: Market value,  Up: OPTIONS | ||||||
|  | 
 | ||||||
|  | 2.17 Combining -B, -V, -value | ||||||
|  | ============================= | ||||||
|  | 
 | ||||||
|  | The rightmost of these flags wins. | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: Output destination,  Next: Output format,  Prev: Combining -B -V --value,  Up: OPTIONS | ||||||
| 
 | 
 | ||||||
| 2.18 Output destination | 2.18 Output destination | ||||||
| ======================= | ======================= | ||||||
| @ -987,6 +1182,7 @@ unambiguous prefix of a command name ('hledger inc'). | |||||||
|    Here are all the builtin commands in alphabetical order.  See also |    Here are all the builtin commands in alphabetical order.  See also | ||||||
| 'hledger' for a more organised command list, and 'hledger CMD -h' for | 'hledger' for a more organised command list, and 'hledger CMD -h' for | ||||||
| detailed command help. | detailed command help. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * accounts:: | * accounts:: | ||||||
| @ -1162,6 +1358,7 @@ show real-world account balances.  In some cases the -H/-historical flag | |||||||
| is used to ensure this (more below). | is used to ensure this (more below). | ||||||
| 
 | 
 | ||||||
|    The balance command can produce several styles of report: |    The balance command can produce several styles of report: | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Classic balance report:: | * Classic balance report:: | ||||||
| @ -1250,7 +1447,9 @@ with data fields interpolated like so: | |||||||
|    '%[MIN][.MAX](FIELDNAME)' |    '%[MIN][.MAX](FIELDNAME)' | ||||||
| 
 | 
 | ||||||
|    * MIN pads with spaces to at least this width (optional) |    * MIN pads with spaces to at least this width (optional) | ||||||
|  | 
 | ||||||
|    * MAX truncates at this width (optional) |    * MAX truncates at this width (optional) | ||||||
|  | 
 | ||||||
|    * FIELDNAME must be enclosed in parentheses, and can be one of: |    * FIELDNAME must be enclosed in parentheses, and can be one of: | ||||||
| 
 | 
 | ||||||
|         * 'depth_spacer' - a number of spaces equal to the account's |         * 'depth_spacer' - a number of spaces equal to the account's | ||||||
| @ -1390,6 +1589,10 @@ different information: | |||||||
|      ----------------------++------------------------------------- |      ----------------------++------------------------------------- | ||||||
|                            ||           0           0           0  |                            ||           0           0           0  | ||||||
| 
 | 
 | ||||||
|  |    Note that '--cumulative' or '--historical/-H' disable | ||||||
|  | '--row-total/-T', since summing end balances generally does not make | ||||||
|  | sense. | ||||||
|  | 
 | ||||||
|    Multicolumn balance reports display accounts in flat mode by default; |    Multicolumn balance reports display accounts in flat mode by default; | ||||||
| to see the hierarchy, use '--tree'. | to see the hierarchy, use '--tree'. | ||||||
| 
 | 
 | ||||||
| @ -1557,6 +1760,7 @@ Budget performance in 2017/11/01-2017/12/31: | |||||||
|                       ||      0 [              0]       0 [              0]  |                       ||      0 [              0]       0 [              0]  | ||||||
| 
 | 
 | ||||||
|    For more examples, see Budgeting and Forecasting. |    For more examples, see Budgeting and Forecasting. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Nested budgets:: | * Nested budgets:: | ||||||
| @ -1696,7 +1900,9 @@ Total: | |||||||
| each report period.  As with multicolumn balance reports, you can alter | each report period.  As with multicolumn balance reports, you can alter | ||||||
| the report mode with '--change'/'--cumulative'/'--historical'.  Normally | the report mode with '--change'/'--cumulative'/'--historical'.  Normally | ||||||
| balancesheet shows historical ending balances, which is what you need | balancesheet shows historical ending balances, which is what you need | ||||||
| for a balance sheet; note this means it ignores report begin dates. | for a balance sheet; note this means it ignores report begin dates (and | ||||||
|  | '-T/--row-total', since summing end balances generally does not make | ||||||
|  | sense). | ||||||
| 
 | 
 | ||||||
|    This command also supports output destination and output format |    This command also supports output destination and output format | ||||||
| selection. | selection. | ||||||
| @ -1815,7 +2021,7 @@ end of a period. | |||||||
| 
 | 
 | ||||||
|    The closing transaction transfers balances to "equity:closing |    The closing transaction transfers balances to "equity:closing | ||||||
| balances".  The opening transaction transfers balances from | balances".  The opening transaction transfers balances from | ||||||
| "equity:opening balances".  You can chose to print just one of the | "equity:opening balances".  You can choose to print just one of the | ||||||
| transactions by using the '--opening' or '--closing' flag. | transactions by using the '--opening' or '--closing' flag. | ||||||
| 
 | 
 | ||||||
|    If you split your journal files by time (eg yearly), you will |    If you split your journal files by time (eg yearly), you will | ||||||
| @ -1959,6 +2165,29 @@ see only uncategorised transactions: | |||||||
| 
 | 
 | ||||||
| $ hledger import --dry ... | hledger -f- print unknown --ignore-assertions | $ hledger import --dry ... | hledger -f- print unknown --ignore-assertions | ||||||
| 
 | 
 | ||||||
|  | * Menu: | ||||||
|  | 
 | ||||||
|  | * Importing balance assignments:: | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | File: hledger.info,  Node: Importing balance assignments,  Up: import | ||||||
|  | 
 | ||||||
|  | 4.13.1 Importing balance assignments | ||||||
|  | ------------------------------------ | ||||||
|  | 
 | ||||||
|  | Entries added by import will have their posting amounts made explicit | ||||||
|  | (like 'hledger print -x').  This means that any balance assignments in | ||||||
|  | imported files must be evaluated; but, imported files don't get to see | ||||||
|  | the main file's account balances.  As a result, importing entries with | ||||||
|  | balance assignments (eg from an institution that provides only balances | ||||||
|  | and not posting amounts) will probably generate incorrect posting | ||||||
|  | amounts.  To avoid this problem, use print instead of import: | ||||||
|  | 
 | ||||||
|  | $ hledger print IMPORTFILE [--new] >> $LEDGER_FILE | ||||||
|  | 
 | ||||||
|  |    (If you think import should leave amounts implicit like print does, | ||||||
|  | please test it and send a pull request.) | ||||||
|  | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: incomestatement,  Next: prices,  Prev: import,  Up: COMMANDS | File: hledger.info,  Node: incomestatement,  Next: prices,  Prev: import,  Up: COMMANDS | ||||||
| 
 | 
 | ||||||
| @ -2225,6 +2454,7 @@ $ hledger register --monthly assets --depth 1h | |||||||
| these will be adjusted outward if necessary to contain a whole number of | these will be adjusted outward if necessary to contain a whole number of | ||||||
| intervals.  This ensures that the first and last intervals are full | intervals.  This ensures that the first and last intervals are full | ||||||
| length and comparable to the others in the report. | length and comparable to the others in the report. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Custom register output:: | * Custom register output:: | ||||||
| @ -2292,9 +2522,9 @@ transaction's first posting amount. | |||||||
| 
 | 
 | ||||||
|    Examples: |    Examples: | ||||||
| 
 | 
 | ||||||
| hledger-rewrite.hs ^income --add-posting '(liabilities:tax)  *.33  ; income tax' --add-posting '(reserve:gifts)  $100' | $ 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 expenses:gifts --add-posting '(reserve:gifts)  *-1"' | ||||||
| hledger-rewrite.hs -f rewrites.hledger | $ hledger-rewrite.hs -f rewrites.hledger | ||||||
| 
 | 
 | ||||||
|    rewrites.hledger may consist of entries like: |    rewrites.hledger may consist of entries like: | ||||||
| 
 | 
 | ||||||
| @ -2557,6 +2787,7 @@ haskell) library functions that built-in commands do, for command-line | |||||||
| options, journal parsing, reporting, etc. | options, journal parsing, reporting, etc. | ||||||
| 
 | 
 | ||||||
|    Here are some hledger add-ons available: |    Here are some hledger add-ons available: | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * Official add-ons:: | * Official add-ons:: | ||||||
| @ -2570,6 +2801,7 @@ File: hledger.info,  Node: Official add-ons,  Next: Third party add-ons,  Up: AD | |||||||
| ==================== | ==================== | ||||||
| 
 | 
 | ||||||
| These are maintained and released along with hledger. | These are maintained and released along with hledger. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * api:: | * api:: | ||||||
| @ -2608,6 +2840,7 @@ File: hledger.info,  Node: Third party add-ons,  Next: Experimental add-ons,  Pr | |||||||
| 
 | 
 | ||||||
| These are maintained separately, and usually updated shortly after a | These are maintained separately, and usually updated shortly after a | ||||||
| hledger release. | hledger release. | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * diff:: | * diff:: | ||||||
| @ -2661,6 +2894,7 @@ These are available in source form in the hledger repo's bin/ directory; | |||||||
| installing them is pretty easy.  They may be less mature and documented | installing them is pretty easy.  They may be less mature and documented | ||||||
| than built-in commands.  Reading and tweaking these is a good way to | than built-in commands.  Reading and tweaking these is a good way to | ||||||
| start making your own! | start making your own! | ||||||
|  | 
 | ||||||
| * Menu: | * Menu: | ||||||
| 
 | 
 | ||||||
| * autosync:: | * autosync:: | ||||||
| @ -2697,160 +2931,168 @@ hledger-check.hs checks more powerful account balance assertions. | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top68 | Node: Top68 | ||||||
| Node: EXAMPLES1888 | Node: EXAMPLES1891 | ||||||
| Ref: #examples1988 | Ref: #examples1991 | ||||||
| Node: OPTIONS3634 | Node: OPTIONS3637 | ||||||
| Ref: #options3736 | Ref: #options3739 | ||||||
| Node: General options4171 | Node: General options4178 | ||||||
| Ref: #general-options4296 | Ref: #general-options4303 | ||||||
| Node: Command options6978 | Node: Command options6985 | ||||||
| Ref: #command-options7129 | Ref: #command-options7136 | ||||||
| Node: Command arguments7527 | Node: Command arguments7534 | ||||||
| Ref: #command-arguments7681 | Ref: #command-arguments7688 | ||||||
| Node: Argument files7802 | Node: Argument files7809 | ||||||
| Ref: #argument-files7978 | Ref: #argument-files7985 | ||||||
| Node: Special characters in arguments and queries8244 | Node: Special characters in arguments and queries8251 | ||||||
| Ref: #special-characters-in-arguments-and-queries8478 | Ref: #special-characters-in-arguments-and-queries8485 | ||||||
| Node: More escaping8928 | Node: More escaping8936 | ||||||
| Ref: #more-escaping9090 | Ref: #more-escaping9098 | ||||||
| Node: Even more escaping9386 | Node: Even more escaping9394 | ||||||
| Ref: #even-more-escaping9580 | Ref: #even-more-escaping9588 | ||||||
| Node: Less escaping10251 | Node: Less escaping10259 | ||||||
| Ref: #less-escaping10413 | Ref: #less-escaping10421 | ||||||
| Node: Command line tips10658 | Node: Command line tips10666 | ||||||
| Ref: #command-line-tips10844 | Ref: #command-line-tips10852 | ||||||
| Node: Unicode characters11221 | Node: Unicode characters11229 | ||||||
| Ref: #unicode-characters11377 | Ref: #unicode-characters11385 | ||||||
| Node: Input files12102 | Node: Input files12797 | ||||||
| Ref: #input-files12238 | Ref: #input-files12933 | ||||||
| Node: Smart dates14208 | Node: Smart dates14903 | ||||||
| Ref: #smart-dates14349 | Ref: #smart-dates15044 | ||||||
| Node: Report start & end date15755 | Node: Report start & end date16450 | ||||||
| Ref: #report-start-end-date15927 | Ref: #report-start-end-date16622 | ||||||
| Node: Report intervals16993 | Node: Report intervals17688 | ||||||
| Ref: #report-intervals17158 | Ref: #report-intervals17853 | ||||||
| Node: Period expressions17559 | Node: Period expressions18254 | ||||||
| Ref: #period-expressions17719 | Ref: #period-expressions18414 | ||||||
| Node: Depth limiting21676 | Node: Depth limiting22371 | ||||||
| Ref: #depth-limiting21820 | Ref: #depth-limiting22515 | ||||||
| Node: Pivoting22162 | Node: Pivoting22857 | ||||||
| Ref: #pivoting22280 | Ref: #pivoting22975 | ||||||
| Node: Cost23956 | Node: Cost24651 | ||||||
| Ref: #cost24064 | Ref: #cost24759 | ||||||
| Node: Market value24182 | Node: Market value24877 | ||||||
| Ref: #market-value24317 | Ref: #market-value25016 | ||||||
| Node: Combining -B and -V25683 | Node: More control over valuation26257 | ||||||
| Ref: #combining--b-and--v25846 | Ref: #more-control-over-valuation26442 | ||||||
| Node: Output destination25993 | Node: Effect of --value on reports28897 | ||||||
| Ref: #output-destination26155 | Ref: #effect-of---value-on-reports29116 | ||||||
| Node: Output format26438 | Node: Some useful value reports31807 | ||||||
| Ref: #output-format26590 | Ref: #some-useful-value-reports31986 | ||||||
| Node: Regular expressions26975 | Node: Combining -B -V --value32484 | ||||||
| Ref: #regular-expressions27112 | Ref: #combining--b--v---value32661 | ||||||
| Node: QUERIES28473 | Node: Output destination32697 | ||||||
| Ref: #queries28575 | Ref: #output-destination32863 | ||||||
| Node: COMMANDS32537 | Node: Output format33146 | ||||||
| Ref: #commands32649 | Ref: #output-format33298 | ||||||
| Node: accounts33649 | Node: Regular expressions33683 | ||||||
| Ref: #accounts33747 | Ref: #regular-expressions33820 | ||||||
| Node: activity34446 | Node: QUERIES35181 | ||||||
| Ref: #activity34556 | Ref: #queries35283 | ||||||
| Node: add34939 | Node: COMMANDS39245 | ||||||
| Ref: #add35038 | Ref: #commands39357 | ||||||
| Node: balance37625 | Node: accounts40358 | ||||||
| Ref: #balance37736 | Ref: #accounts40456 | ||||||
| Node: Classic balance report39177 | Node: activity41155 | ||||||
| Ref: #classic-balance-report39350 | Ref: #activity41265 | ||||||
| Node: Customising the classic balance report40719 | Node: add41648 | ||||||
| Ref: #customising-the-classic-balance-report40947 | Ref: #add41747 | ||||||
| Node: Colour support43021 | Node: balance44334 | ||||||
| Ref: #colour-support43188 | Ref: #balance44445 | ||||||
| Node: Flat mode43361 | Node: Classic balance report45887 | ||||||
| Ref: #flat-mode43509 | Ref: #classic-balance-report46060 | ||||||
| Node: Depth limited balance reports43922 | Node: Customising the classic balance report47429 | ||||||
| Ref: #depth-limited-balance-reports44122 | Ref: #customising-the-classic-balance-report47657 | ||||||
| Node: Multicolumn balance report44578 | Node: Colour support49733 | ||||||
| Ref: #multicolumn-balance-report44776 | Ref: #colour-support49900 | ||||||
| Node: Budget report49956 | Node: Flat mode50073 | ||||||
| Ref: #budget-report50099 | Ref: #flat-mode50221 | ||||||
| Node: Nested budgets55300 | Node: Depth limited balance reports50634 | ||||||
| Ref: #nested-budgets55412 | Ref: #depth-limited-balance-reports50834 | ||||||
| Ref: #output-format-158892 | Node: Multicolumn balance report51290 | ||||||
| Node: balancesheet58970 | Ref: #multicolumn-balance-report51488 | ||||||
| Ref: #balancesheet59106 | Node: Budget report56802 | ||||||
| Node: balancesheetequity60340 | Ref: #budget-report56945 | ||||||
| Ref: #balancesheetequity60489 | Node: Nested budgets62147 | ||||||
| Node: cashflow61050 | Ref: #nested-budgets62259 | ||||||
| Ref: #cashflow61178 | Ref: #output-format-165739 | ||||||
| Node: check-dates62206 | Node: balancesheet65817 | ||||||
| Ref: #check-dates62333 | Ref: #balancesheet65953 | ||||||
| Node: check-dupes62612 | Node: balancesheetequity67268 | ||||||
| Ref: #check-dupes62736 | Ref: #balancesheetequity67417 | ||||||
| Node: close63029 | Node: cashflow67978 | ||||||
| Ref: #close63137 | Ref: #cashflow68106 | ||||||
| Node: files66550 | Node: check-dates69134 | ||||||
| Ref: #files66651 | Ref: #check-dates69261 | ||||||
| Node: help66798 | Node: check-dupes69540 | ||||||
| Ref: #help66898 | Ref: #check-dupes69664 | ||||||
| Node: import67991 | Node: close69957 | ||||||
| Ref: #import68105 | Ref: #close70065 | ||||||
| Node: incomestatement68849 | Node: files73479 | ||||||
| Ref: #incomestatement68983 | Ref: #files73580 | ||||||
| Node: prices70319 | Node: help73727 | ||||||
| Ref: #prices70434 | Ref: #help73827 | ||||||
| Node: print70713 | Node: import74920 | ||||||
| Ref: #print70823 | Ref: #import75034 | ||||||
| Node: print-unique75316 | Node: Importing balance assignments75822 | ||||||
| Ref: #print-unique75442 | Ref: #importing-balance-assignments75970 | ||||||
| Node: register75727 | Node: incomestatement76619 | ||||||
| Ref: #register75854 | Ref: #incomestatement76753 | ||||||
| Node: Custom register output80025 | Node: prices78089 | ||||||
| Ref: #custom-register-output80154 | Ref: #prices78204 | ||||||
| Node: register-match81416 | Node: print78483 | ||||||
| Ref: #register-match81550 | Ref: #print78593 | ||||||
| Node: rewrite81901 | Node: print-unique83086 | ||||||
| Ref: #rewrite82016 | Ref: #print-unique83212 | ||||||
| Node: Re-write rules in a file83865 | Node: register83497 | ||||||
| Ref: #re-write-rules-in-a-file83999 | Ref: #register83624 | ||||||
| Node: Diff output format85209 | Node: Custom register output87796 | ||||||
| Ref: #diff-output-format85378 | Ref: #custom-register-output87925 | ||||||
| Node: rewrite vs print --auto86470 | Node: register-match89187 | ||||||
| Ref: #rewrite-vs.-print---auto86649 | Ref: #register-match89321 | ||||||
| Node: roi87205 | Node: rewrite89672 | ||||||
| Ref: #roi87303 | Ref: #rewrite89787 | ||||||
| Node: stats88315 | Node: Re-write rules in a file91642 | ||||||
| Ref: #stats88414 | Ref: #re-write-rules-in-a-file91776 | ||||||
| Node: tags89168 | Node: Diff output format92986 | ||||||
| Ref: #tags89266 | Ref: #diff-output-format93155 | ||||||
| Node: test89496 | Node: rewrite vs print --auto94247 | ||||||
| Ref: #test89580 | Ref: #rewrite-vs.-print---auto94426 | ||||||
| Node: ADD-ON COMMANDS90341 | Node: roi94982 | ||||||
| Ref: #add-on-commands90451 | Ref: #roi95080 | ||||||
| Node: Official add-ons91738 | Node: stats96092 | ||||||
| Ref: #official-add-ons91878 | Ref: #stats96191 | ||||||
| Node: api91965 | Node: tags96945 | ||||||
| Ref: #api92054 | Ref: #tags97043 | ||||||
| Node: ui92106 | Node: test97273 | ||||||
| Ref: #ui92205 | Ref: #test97357 | ||||||
| Node: web92263 | Node: ADD-ON COMMANDS98118 | ||||||
| Ref: #web92352 | Ref: #add-on-commands98228 | ||||||
| Node: Third party add-ons92398 | Node: Official add-ons99516 | ||||||
| Ref: #third-party-add-ons92573 | Ref: #official-add-ons99656 | ||||||
| Node: diff92708 | Node: api99744 | ||||||
| Ref: #diff92805 | Ref: #api99833 | ||||||
| Node: iadd92904 | Node: ui99885 | ||||||
| Ref: #iadd93018 | Ref: #ui99984 | ||||||
| Node: interest93101 | Node: web100042 | ||||||
| Ref: #interest93222 | Ref: #web100131 | ||||||
| Node: irr93317 | Node: Third party add-ons100177 | ||||||
| Ref: #irr93415 | Ref: #third-party-add-ons100352 | ||||||
| Node: Experimental add-ons93546 | Node: diff100488 | ||||||
| Ref: #experimental-add-ons93698 | Ref: #diff100585 | ||||||
| Node: autosync93978 | Node: iadd100684 | ||||||
| Ref: #autosync94089 | Ref: #iadd100798 | ||||||
| Node: chart94328 | Node: interest100881 | ||||||
| Ref: #chart94447 | Ref: #interest101002 | ||||||
| Node: check94518 | Node: irr101097 | ||||||
| Ref: #check94620 | Ref: #irr101195 | ||||||
|  | Node: Experimental add-ons101326 | ||||||
|  | Ref: #experimental-add-ons101478 | ||||||
|  | Node: autosync101759 | ||||||
|  | Ref: #autosync101870 | ||||||
|  | Node: chart102109 | ||||||
|  | Ref: #chart102228 | ||||||
|  | Node: check102299 | ||||||
|  | Ref: #check102401 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user