mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
;regen manuals
This commit is contained in:
parent
c8a84e3c96
commit
368297102d
@ -610,7 +610,7 @@ separator TAB
|
||||
.fi
|
||||
.PP
|
||||
See also: File Extension.
|
||||
.SS \f[C]if\f[R]
|
||||
.SS \f[C]if\f[R] block
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
@ -702,6 +702,76 @@ banking thru software
|
||||
comment XXX deductible ? check it
|
||||
\f[R]
|
||||
.fi
|
||||
.SS \f[C]if\f[R] table
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
if,CSVFIELDNAME1,CSVFIELDNAME2,...,CSVFIELDNAMEn
|
||||
MATCHER1,VALUE11,VALUE12,...,VALUE1n
|
||||
MATCHER2,VALUE21,VALUE22,...,VALUE2n
|
||||
MATCHER3,VALUE31,VALUE32,...,VALUE3n
|
||||
<empty line>
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Conditional tables (\[dq]if tables\[dq]) are a different syntax to
|
||||
specify field assignments that will be applied only to CSV records which
|
||||
match certain patterns.
|
||||
.PP
|
||||
MATCHER could be either field or record matcher, as described above.
|
||||
When MATCHER matches, values from that row would be assigned to the CSV
|
||||
fields named on the \f[C]if\f[R] line, in the same order.
|
||||
.PP
|
||||
Therefore \f[C]if\f[R] table is exactly equivalent to a sequence of of
|
||||
\f[C]if\f[R] blocks:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
if MATCHER1
|
||||
CSVFIELDNAME1 VALUE11
|
||||
CSVFIELDNAME2 VALUE12
|
||||
...
|
||||
CSVFIELDNAMEn VALUE1n
|
||||
|
||||
if MATCHER2
|
||||
CSVFIELDNAME1 VALUE21
|
||||
CSVFIELDNAME2 VALUE22
|
||||
...
|
||||
CSVFIELDNAMEn VALUE2n
|
||||
|
||||
if MATCHER3
|
||||
CSVFIELDNAME1 VALUE31
|
||||
CSVFIELDNAME2 VALUE32
|
||||
...
|
||||
CSVFIELDNAMEn VALUE3n
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Each line starting with MATCHER should contain enough (possibly empty)
|
||||
values for all the listed fields.
|
||||
.PP
|
||||
Rules would be checked and applied in the order they are listed in the
|
||||
table and, like with \f[C]if\f[R] blocks, later rules (in the same or
|
||||
another table) or \f[C]if\f[R] blocks could override the effect of any
|
||||
rule.
|
||||
.PP
|
||||
Instead of \[aq],\[aq] you can use a variety of other non-alphanumeric
|
||||
characters as a separator.
|
||||
First character after \f[C]if\f[R] is taken to be the separator for the
|
||||
rest of the table.
|
||||
It is the responsibility of the user to ensure that separator does not
|
||||
occur inside MATCHERs and values - there is no way to escape separator.
|
||||
.PP
|
||||
Example:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
if,account2,comment
|
||||
atm transaction fee,expenses:business:banking,deductible? check it
|
||||
%description groceries,expenses:groceries,
|
||||
2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out
|
||||
\f[R]
|
||||
.fi
|
||||
.SS \f[C]end\f[R]
|
||||
.PP
|
||||
This rule can be used inside if blocks (only), to make hledger stop
|
||||
|
@ -374,7 +374,8 @@ Blank lines and lines beginning with '#' or ';' are ignored.
|
||||
* fields::
|
||||
* field assignment::
|
||||
* separator::
|
||||
* if::
|
||||
* if block::
|
||||
* if table::
|
||||
* end::
|
||||
* date-format::
|
||||
* newest-first::
|
||||
@ -567,7 +568,7 @@ becomes '1' when interpolated) (#1051). See TIPS below for more about
|
||||
referencing other fields.
|
||||
|
||||
|
||||
File: hledger_csv.info, Node: separator, Next: if, Prev: field assignment, Up: CSV RULES
|
||||
File: hledger_csv.info, Node: separator, Next: if block, Prev: field assignment, Up: CSV RULES
|
||||
|
||||
2.4 'separator'
|
||||
===============
|
||||
@ -587,10 +588,10 @@ separator TAB
|
||||
See also: File Extension.
|
||||
|
||||
|
||||
File: hledger_csv.info, Node: if, Next: end, Prev: separator, Up: CSV RULES
|
||||
File: hledger_csv.info, Node: if block, Next: if table, Prev: separator, Up: CSV RULES
|
||||
|
||||
2.5 'if'
|
||||
========
|
||||
2.5 'if' block
|
||||
==============
|
||||
|
||||
if MATCHER
|
||||
RULE
|
||||
@ -659,9 +660,70 @@ banking thru software
|
||||
comment XXX deductible ? check it
|
||||
|
||||
|
||||
File: hledger_csv.info, Node: end, Next: date-format, Prev: if, Up: CSV RULES
|
||||
File: hledger_csv.info, Node: if table, Next: end, Prev: if block, Up: CSV RULES
|
||||
|
||||
2.6 'end'
|
||||
2.6 'if' table
|
||||
==============
|
||||
|
||||
if,CSVFIELDNAME1,CSVFIELDNAME2,...,CSVFIELDNAMEn
|
||||
MATCHER1,VALUE11,VALUE12,...,VALUE1n
|
||||
MATCHER2,VALUE21,VALUE22,...,VALUE2n
|
||||
MATCHER3,VALUE31,VALUE32,...,VALUE3n
|
||||
<empty line>
|
||||
|
||||
Conditional tables ("if tables") are a different syntax to specify
|
||||
field assignments that will be applied only to CSV records which match
|
||||
certain patterns.
|
||||
|
||||
MATCHER could be either field or record matcher, as described above.
|
||||
When MATCHER matches, values from that row would be assigned to the CSV
|
||||
fields named on the 'if' line, in the same order.
|
||||
|
||||
Therefore 'if' table is exactly equivalent to a sequence of of 'if'
|
||||
blocks:
|
||||
|
||||
if MATCHER1
|
||||
CSVFIELDNAME1 VALUE11
|
||||
CSVFIELDNAME2 VALUE12
|
||||
...
|
||||
CSVFIELDNAMEn VALUE1n
|
||||
|
||||
if MATCHER2
|
||||
CSVFIELDNAME1 VALUE21
|
||||
CSVFIELDNAME2 VALUE22
|
||||
...
|
||||
CSVFIELDNAMEn VALUE2n
|
||||
|
||||
if MATCHER3
|
||||
CSVFIELDNAME1 VALUE31
|
||||
CSVFIELDNAME2 VALUE32
|
||||
...
|
||||
CSVFIELDNAMEn VALUE3n
|
||||
|
||||
Each line starting with MATCHER should contain enough (possibly
|
||||
empty) values for all the listed fields.
|
||||
|
||||
Rules would be checked and applied in the order they are listed in
|
||||
the table and, like with 'if' blocks, later rules (in the same or
|
||||
another table) or 'if' blocks could override the effect of any rule.
|
||||
|
||||
Instead of ',' you can use a variety of other non-alphanumeric
|
||||
characters as a separator. First character after 'if' is taken to be
|
||||
the separator for the rest of the table. It is the responsibility of
|
||||
the user to ensure that separator does not occur inside MATCHERs and
|
||||
values - there is no way to escape separator.
|
||||
|
||||
Example:
|
||||
|
||||
if,account2,comment
|
||||
atm transaction fee,expenses:business:banking,deductible? check it
|
||||
%description groceries,expenses:groceries,
|
||||
2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out
|
||||
|
||||
|
||||
File: hledger_csv.info, Node: end, Next: date-format, Prev: if table, Up: CSV RULES
|
||||
|
||||
2.7 'end'
|
||||
=========
|
||||
|
||||
This rule can be used inside if blocks (only), to make hledger stop
|
||||
@ -675,7 +737,7 @@ if ,,,,
|
||||
|
||||
File: hledger_csv.info, Node: date-format, Next: newest-first, Prev: end, Up: CSV RULES
|
||||
|
||||
2.7 'date-format'
|
||||
2.8 'date-format'
|
||||
=================
|
||||
|
||||
date-format DATEFMT
|
||||
@ -706,7 +768,7 @@ https://hackage.haskell.org/package/time/docs/Data-Time-Format.html#v:formatTime
|
||||
|
||||
File: hledger_csv.info, Node: newest-first, Next: include, Prev: date-format, Up: CSV RULES
|
||||
|
||||
2.8 'newest-first'
|
||||
2.9 'newest-first'
|
||||
==================
|
||||
|
||||
hledger always sorts the generated transactions by date. Transactions
|
||||
@ -728,8 +790,8 @@ newest-first
|
||||
|
||||
File: hledger_csv.info, Node: include, Next: balance-type, Prev: newest-first, Up: CSV RULES
|
||||
|
||||
2.9 'include'
|
||||
=============
|
||||
2.10 'include'
|
||||
==============
|
||||
|
||||
include RULESFILE
|
||||
|
||||
@ -751,7 +813,7 @@ include categorisation.rules
|
||||
|
||||
File: hledger_csv.info, Node: balance-type, Prev: include, Up: CSV RULES
|
||||
|
||||
2.10 'balance-type'
|
||||
2.11 'balance-type'
|
||||
===================
|
||||
|
||||
Balance assertions generated by assigning to balanceN are of the simple
|
||||
@ -1048,62 +1110,64 @@ Node: Paypal6570
|
||||
Ref: #paypal6664
|
||||
Node: CSV RULES14308
|
||||
Ref: #csv-rules14417
|
||||
Node: skip14693
|
||||
Ref: #skip14786
|
||||
Node: fields15161
|
||||
Ref: #fields15283
|
||||
Node: Transaction field names16448
|
||||
Ref: #transaction-field-names16608
|
||||
Node: Posting field names16719
|
||||
Ref: #posting-field-names16871
|
||||
Node: account16941
|
||||
Ref: #account17057
|
||||
Node: amount17594
|
||||
Ref: #amount17725
|
||||
Node: currency18832
|
||||
Ref: #currency18967
|
||||
Node: balance19173
|
||||
Ref: #balance19307
|
||||
Node: comment19624
|
||||
Ref: #comment19741
|
||||
Node: field assignment19904
|
||||
Ref: #field-assignment20047
|
||||
Node: separator20865
|
||||
Ref: #separator20994
|
||||
Node: if21405
|
||||
Ref: #if21507
|
||||
Node: end23663
|
||||
Ref: #end23769
|
||||
Node: date-format23993
|
||||
Ref: #date-format24125
|
||||
Node: newest-first24874
|
||||
Ref: #newest-first25012
|
||||
Node: include25695
|
||||
Ref: #include25824
|
||||
Node: balance-type26268
|
||||
Ref: #balance-type26388
|
||||
Node: TIPS27088
|
||||
Ref: #tips27170
|
||||
Node: Rapid feedback27426
|
||||
Ref: #rapid-feedback27543
|
||||
Node: Valid CSV28003
|
||||
Ref: #valid-csv28133
|
||||
Node: File Extension28325
|
||||
Ref: #file-extension28477
|
||||
Node: Reading multiple CSV files28887
|
||||
Ref: #reading-multiple-csv-files29072
|
||||
Node: Valid transactions29313
|
||||
Ref: #valid-transactions29491
|
||||
Node: Deduplicating importing30119
|
||||
Ref: #deduplicating-importing30298
|
||||
Node: Setting amounts31331
|
||||
Ref: #setting-amounts31500
|
||||
Node: Setting currency/commodity32487
|
||||
Ref: #setting-currencycommodity32679
|
||||
Node: Referencing other fields33482
|
||||
Ref: #referencing-other-fields33682
|
||||
Node: How CSV rules are evaluated34579
|
||||
Ref: #how-csv-rules-are-evaluated34752
|
||||
Node: skip14712
|
||||
Ref: #skip14805
|
||||
Node: fields15180
|
||||
Ref: #fields15302
|
||||
Node: Transaction field names16467
|
||||
Ref: #transaction-field-names16627
|
||||
Node: Posting field names16738
|
||||
Ref: #posting-field-names16890
|
||||
Node: account16960
|
||||
Ref: #account17076
|
||||
Node: amount17613
|
||||
Ref: #amount17744
|
||||
Node: currency18851
|
||||
Ref: #currency18986
|
||||
Node: balance19192
|
||||
Ref: #balance19326
|
||||
Node: comment19643
|
||||
Ref: #comment19760
|
||||
Node: field assignment19923
|
||||
Ref: #field-assignment20066
|
||||
Node: separator20884
|
||||
Ref: #separator21019
|
||||
Node: if block21430
|
||||
Ref: #if-block21555
|
||||
Node: if table23711
|
||||
Ref: #if-table23830
|
||||
Node: end25568
|
||||
Ref: #end25680
|
||||
Node: date-format25904
|
||||
Ref: #date-format26036
|
||||
Node: newest-first26785
|
||||
Ref: #newest-first26923
|
||||
Node: include27606
|
||||
Ref: #include27737
|
||||
Node: balance-type28181
|
||||
Ref: #balance-type28301
|
||||
Node: TIPS29001
|
||||
Ref: #tips29083
|
||||
Node: Rapid feedback29339
|
||||
Ref: #rapid-feedback29456
|
||||
Node: Valid CSV29916
|
||||
Ref: #valid-csv30046
|
||||
Node: File Extension30238
|
||||
Ref: #file-extension30390
|
||||
Node: Reading multiple CSV files30800
|
||||
Ref: #reading-multiple-csv-files30985
|
||||
Node: Valid transactions31226
|
||||
Ref: #valid-transactions31404
|
||||
Node: Deduplicating importing32032
|
||||
Ref: #deduplicating-importing32211
|
||||
Node: Setting amounts33244
|
||||
Ref: #setting-amounts33413
|
||||
Node: Setting currency/commodity34400
|
||||
Ref: #setting-currencycommodity34592
|
||||
Node: Referencing other fields35395
|
||||
Ref: #referencing-other-fields35595
|
||||
Node: How CSV rules are evaluated36492
|
||||
Ref: #how-csv-rules-are-evaluated36665
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
@ -467,7 +467,7 @@ CSV RULES
|
||||
|
||||
See also: File Extension.
|
||||
|
||||
if
|
||||
if block
|
||||
if MATCHER
|
||||
RULE
|
||||
|
||||
@ -535,8 +535,63 @@ CSV RULES
|
||||
account2 expenses:business:banking
|
||||
comment XXX deductible ? check it
|
||||
|
||||
if table
|
||||
if,CSVFIELDNAME1,CSVFIELDNAME2,...,CSVFIELDNAMEn
|
||||
MATCHER1,VALUE11,VALUE12,...,VALUE1n
|
||||
MATCHER2,VALUE21,VALUE22,...,VALUE2n
|
||||
MATCHER3,VALUE31,VALUE32,...,VALUE3n
|
||||
<empty line>
|
||||
|
||||
Conditional tables ("if tables") are a different syntax to specify
|
||||
field assignments that will be applied only to CSV records which match
|
||||
certain patterns.
|
||||
|
||||
MATCHER could be either field or record matcher, as described above.
|
||||
When MATCHER matches, values from that row would be assigned to the CSV
|
||||
fields named on the if line, in the same order.
|
||||
|
||||
Therefore if table is exactly equivalent to a sequence of of if blocks:
|
||||
|
||||
if MATCHER1
|
||||
CSVFIELDNAME1 VALUE11
|
||||
CSVFIELDNAME2 VALUE12
|
||||
...
|
||||
CSVFIELDNAMEn VALUE1n
|
||||
|
||||
if MATCHER2
|
||||
CSVFIELDNAME1 VALUE21
|
||||
CSVFIELDNAME2 VALUE22
|
||||
...
|
||||
CSVFIELDNAMEn VALUE2n
|
||||
|
||||
if MATCHER3
|
||||
CSVFIELDNAME1 VALUE31
|
||||
CSVFIELDNAME2 VALUE32
|
||||
...
|
||||
CSVFIELDNAMEn VALUE3n
|
||||
|
||||
Each line starting with MATCHER should contain enough (possibly empty)
|
||||
values for all the listed fields.
|
||||
|
||||
Rules would be checked and applied in the order they are listed in the
|
||||
table and, like with if blocks, later rules (in the same or another ta-
|
||||
ble) or if blocks could override the effect of any rule.
|
||||
|
||||
Instead of ',' you can use a variety of other non-alphanumeric charac-
|
||||
ters as a separator. First character after if is taken to be the sepa-
|
||||
rator for the rest of the table. It is the responsibility of the user
|
||||
to ensure that separator does not occur inside MATCHERs and values -
|
||||
there is no way to escape separator.
|
||||
|
||||
Example:
|
||||
|
||||
if,account2,comment
|
||||
atm transaction fee,expenses:business:banking,deductible? check it
|
||||
%description groceries,expenses:groceries,
|
||||
2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out
|
||||
|
||||
end
|
||||
This rule can be used inside if blocks (only), to make hledger stop
|
||||
This rule can be used inside if blocks (only), to make hledger stop
|
||||
reading this CSV file and move on to the next input file, or to command
|
||||
execution. Eg:
|
||||
|
||||
@ -547,10 +602,10 @@ CSV RULES
|
||||
date-format
|
||||
date-format DATEFMT
|
||||
|
||||
This is a helper for the date (and date2) fields. If your CSV dates
|
||||
are not formatted like YYYY-MM-DD, YYYY/MM/DD or YYYY.MM.DD, you'll
|
||||
need to add a date-format rule describing them with a strptime date
|
||||
parsing pattern, which must parse the CSV date value completely. Some
|
||||
This is a helper for the date (and date2) fields. If your CSV dates
|
||||
are not formatted like YYYY-MM-DD, YYYY/MM/DD or YYYY.MM.DD, you'll
|
||||
need to add a date-format rule describing them with a strptime date
|
||||
parsing pattern, which must parse the CSV date value completely. Some
|
||||
examples:
|
||||
|
||||
# MM/DD/YY
|
||||
@ -572,15 +627,15 @@ CSV RULES
|
||||
mat.html#v:formatTime
|
||||
|
||||
newest-first
|
||||
hledger always sorts the generated transactions by date. Transactions
|
||||
on the same date should appear in the same order as their CSV records,
|
||||
as hledger can usually auto-detect whether the CSV's normal order is
|
||||
hledger always sorts the generated transactions by date. Transactions
|
||||
on the same date should appear in the same order as their CSV records,
|
||||
as hledger can usually auto-detect whether the CSV's normal order is
|
||||
oldest first or newest first. But if all of the following are true:
|
||||
|
||||
o the CSV might sometimes contain just one day of data (all records
|
||||
o the CSV might sometimes contain just one day of data (all records
|
||||
having the same date)
|
||||
|
||||
o the CSV records are normally in reverse chronological order (newest
|
||||
o the CSV records are normally in reverse chronological order (newest
|
||||
at the top)
|
||||
|
||||
o and you care about preserving the order of same-day transactions
|
||||
@ -593,9 +648,9 @@ CSV RULES
|
||||
include
|
||||
include RULESFILE
|
||||
|
||||
This includes the contents of another CSV rules file at this point.
|
||||
RULESFILE is an absolute file path or a path relative to the current
|
||||
file's directory. This can be useful for sharing common rules between
|
||||
This includes the contents of another CSV rules file at this point.
|
||||
RULESFILE is an absolute file path or a path relative to the current
|
||||
file's directory. This can be useful for sharing common rules between
|
||||
several rules files, eg:
|
||||
|
||||
# someaccount.csv.rules
|
||||
@ -610,10 +665,10 @@ CSV RULES
|
||||
|
||||
balance-type
|
||||
Balance assertions generated by assigning to balanceN are of the simple
|
||||
= type by default, which is a single-commodity, subaccount-excluding
|
||||
= type by default, which is a single-commodity, subaccount-excluding
|
||||
assertion. You may find the subaccount-including variants more useful,
|
||||
eg if you have created some virtual subaccounts of checking to help
|
||||
with budgeting. You can select a different type of assertion with the
|
||||
eg if you have created some virtual subaccounts of checking to help
|
||||
with budgeting. You can select a different type of assertion with the
|
||||
balance-type rule:
|
||||
|
||||
# balance assertions will consider all commodities and all subaccounts
|
||||
@ -628,19 +683,19 @@ CSV RULES
|
||||
|
||||
TIPS
|
||||
Rapid feedback
|
||||
It's a good idea to get rapid feedback while creating/troubleshooting
|
||||
It's a good idea to get rapid feedback while creating/troubleshooting
|
||||
CSV rules. Here's a good way, using entr from http://eradman.com/entr-
|
||||
project :
|
||||
|
||||
$ ls foo.csv* | entr bash -c 'echo ----; hledger -f foo.csv print desc:SOMEDESC'
|
||||
|
||||
A desc: query (eg) is used to select just one, or a few, transactions
|
||||
of interest. "bash -c" is used to run multiple commands, so we can
|
||||
echo a separator each time the command re-runs, making it easier to
|
||||
A desc: query (eg) is used to select just one, or a few, transactions
|
||||
of interest. "bash -c" is used to run multiple commands, so we can
|
||||
echo a separator each time the command re-runs, making it easier to
|
||||
read the output.
|
||||
|
||||
Valid CSV
|
||||
hledger accepts CSV conforming to RFC 4180. When CSV values are en-
|
||||
hledger accepts CSV conforming to RFC 4180. When CSV values are en-
|
||||
closed in quotes, note:
|
||||
|
||||
o they must be double quotes (not single quotes)
|
||||
@ -648,9 +703,9 @@ TIPS
|
||||
o spaces outside the quotes are not allowed
|
||||
|
||||
File Extension
|
||||
CSV ("Character Separated Values") files should be named with one of
|
||||
these filename extensions: .csv, .ssv, .tsv. Or, the file path should
|
||||
be prefixed with one of csv:, ssv:, tsv:. This helps hledger identify
|
||||
CSV ("Character Separated Values") files should be named with one of
|
||||
these filename extensions: .csv, .ssv, .tsv. Or, the file path should
|
||||
be prefixed with one of csv:, ssv:, tsv:. This helps hledger identify
|
||||
the format and show the right error messages. For example:
|
||||
|
||||
$ hledger -f foo.ssv print
|
||||
@ -662,44 +717,44 @@ TIPS
|
||||
More about this: Input files in the hledger manual.
|
||||
|
||||
Reading multiple CSV files
|
||||
If you use multiple -f options to read multiple CSV files at once,
|
||||
hledger will look for a correspondingly-named rules file for each CSV
|
||||
file. But if you use the --rules-file option, that rules file will be
|
||||
If you use multiple -f options to read multiple CSV files at once,
|
||||
hledger will look for a correspondingly-named rules file for each CSV
|
||||
file. But if you use the --rules-file option, that rules file will be
|
||||
used for all the CSV files.
|
||||
|
||||
Valid transactions
|
||||
After reading a CSV file, hledger post-processes and validates the gen-
|
||||
erated journal entries as it would for a journal file - balancing them,
|
||||
applying balance assignments, and canonicalising amount styles. Any
|
||||
errors at this stage will be reported in the usual way, displaying the
|
||||
applying balance assignments, and canonicalising amount styles. Any
|
||||
errors at this stage will be reported in the usual way, displaying the
|
||||
problem entry.
|
||||
|
||||
There is one exception: balance assertions, if you have generated them,
|
||||
will not be checked, since normally these will work only when the CSV
|
||||
data is part of the main journal. If you do need to check balance as-
|
||||
will not be checked, since normally these will work only when the CSV
|
||||
data is part of the main journal. If you do need to check balance as-
|
||||
sertions generated from CSV right away, pipe into another hledger:
|
||||
|
||||
$ hledger -f file.csv print | hledger -f- print
|
||||
|
||||
Deduplicating, importing
|
||||
When you download a CSV file periodically, eg to get your latest bank
|
||||
transactions, the new file may overlap with the old one, containing
|
||||
When you download a CSV file periodically, eg to get your latest bank
|
||||
transactions, the new file may overlap with the old one, containing
|
||||
some of the same records.
|
||||
|
||||
The import command will (a) detect the new transactions, and (b) append
|
||||
just those transactions to your main journal. It is idempotent, so you
|
||||
don't have to remember how many times you ran it or with which version
|
||||
of the CSV. (It keeps state in a hidden .latest.FILE.csv file.) This
|
||||
don't have to remember how many times you ran it or with which version
|
||||
of the CSV. (It keeps state in a hidden .latest.FILE.csv file.) This
|
||||
is the easiest way to import CSV data. Eg:
|
||||
|
||||
# download the latest CSV files, then run this command.
|
||||
# Note, no -f flags needed here.
|
||||
$ hledger import *.csv [--dry]
|
||||
|
||||
This method works for most CSV files. (Where records have a stable
|
||||
This method works for most CSV files. (Where records have a stable
|
||||
chronological order, and new records appear only at the new end.)
|
||||
|
||||
A number of other tools and workflows, hledger-specific and otherwise,
|
||||
A number of other tools and workflows, hledger-specific and otherwise,
|
||||
exist for converting, deduplicating, classifying and managing CSV data.
|
||||
See:
|
||||
|
||||
@ -710,43 +765,43 @@ TIPS
|
||||
Setting amounts
|
||||
A posting amount can be set in one of these ways:
|
||||
|
||||
o by assigning (with a fields list or field assignment) to amountN
|
||||
o by assigning (with a fields list or field assignment) to amountN
|
||||
(posting N's amount) or amount (posting 1's amount)
|
||||
|
||||
o by assigning to amountN-in and amountN-out (or amount-in and amount-
|
||||
out). For each CSV record, whichever of these has a non-zero value
|
||||
will be used, with appropriate sign. If both contain a non-zero
|
||||
o by assigning to amountN-in and amountN-out (or amount-in and amount-
|
||||
out). For each CSV record, whichever of these has a non-zero value
|
||||
will be used, with appropriate sign. If both contain a non-zero
|
||||
value, this may not work.
|
||||
|
||||
o by assigning to balanceN (or balance) instead of the above, setting
|
||||
the amount indirectly via a balance assignment. If you do this the
|
||||
o by assigning to balanceN (or balance) instead of the above, setting
|
||||
the amount indirectly via a balance assignment. If you do this the
|
||||
default account name may be wrong, so you should set that explicitly.
|
||||
|
||||
There is some special handling for an amount's sign:
|
||||
|
||||
o If an amount value is parenthesised, it will be de-parenthesised and
|
||||
o If an amount value is parenthesised, it will be de-parenthesised and
|
||||
sign-flipped.
|
||||
|
||||
o If an amount value begins with a double minus sign, those cancel out
|
||||
o If an amount value begins with a double minus sign, those cancel out
|
||||
and are removed.
|
||||
|
||||
o If an amount value begins with a plus sign, that will be removed
|
||||
|
||||
Setting currency/commodity
|
||||
If the currency/commodity symbol is included in the CSV's amount
|
||||
If the currency/commodity symbol is included in the CSV's amount
|
||||
field(s), you don't have to do anything special.
|
||||
|
||||
If the currency is provided as a separate CSV field, you can either:
|
||||
|
||||
o assign that to currency, which adds it to all posting amounts. The
|
||||
symbol will prepended to the amount quantity (on the left side). If
|
||||
you write a trailing space after the symbol, there will be a space
|
||||
between symbol and amount (an exception to the usual whitespace
|
||||
o assign that to currency, which adds it to all posting amounts. The
|
||||
symbol will prepended to the amount quantity (on the left side). If
|
||||
you write a trailing space after the symbol, there will be a space
|
||||
between symbol and amount (an exception to the usual whitespace
|
||||
stripping).
|
||||
|
||||
o or assign it to currencyN which adds it to posting N's amount only.
|
||||
|
||||
o or for more control, construct the amount from symbol and quantity
|
||||
o or for more control, construct the amount from symbol and quantity
|
||||
using field assignment, eg:
|
||||
|
||||
fields date,description,currency,quantity
|
||||
@ -754,9 +809,9 @@ TIPS
|
||||
amount %quantity %currency
|
||||
|
||||
Referencing other fields
|
||||
In field assignments, you can interpolate only CSV fields, not hledger
|
||||
fields. In the example below, there's both a CSV field and a hledger
|
||||
field named amount1, but %amount1 always means the CSV field, not the
|
||||
In field assignments, you can interpolate only CSV fields, not hledger
|
||||
fields. In the example below, there's both a CSV field and a hledger
|
||||
field named amount1, but %amount1 always means the CSV field, not the
|
||||
hledger field:
|
||||
|
||||
# Name the third CSV field "amount1"
|
||||
@ -768,7 +823,7 @@ TIPS
|
||||
# Set comment to the CSV amount1 (not the amount1 assigned above)
|
||||
comment %amount1
|
||||
|
||||
Here, since there's no CSV amount1 field, %amount1 will produce a lit-
|
||||
Here, since there's no CSV amount1 field, %amount1 will produce a lit-
|
||||
eral "amount1":
|
||||
|
||||
fields date,description,csvamount
|
||||
@ -776,7 +831,7 @@ TIPS
|
||||
# Can't interpolate amount1 here
|
||||
comment %amount1
|
||||
|
||||
When there are multiple field assignments to the same hledger field,
|
||||
When there are multiple field assignments to the same hledger field,
|
||||
only the last one takes effect. Here, comment's value will be be B, or
|
||||
C if "something" is matched, but never A:
|
||||
|
||||
@ -786,14 +841,14 @@ TIPS
|
||||
comment C
|
||||
|
||||
How CSV rules are evaluated
|
||||
Here's how to think of CSV rules being evaluated (if you really need
|
||||
Here's how to think of CSV rules being evaluated (if you really need
|
||||
to). First,
|
||||
|
||||
o include - all includes are inlined, from top to bottom, depth first.
|
||||
(At each include point the file is inlined and scanned for further
|
||||
o include - all includes are inlined, from top to bottom, depth first.
|
||||
(At each include point the file is inlined and scanned for further
|
||||
includes, recursively, before proceeding.)
|
||||
|
||||
Then "global" rules are evaluated, top to bottom. If a rule is re-
|
||||
Then "global" rules are evaluated, top to bottom. If a rule is re-
|
||||
peated, the last one wins:
|
||||
|
||||
o skip (at top level)
|
||||
@ -807,30 +862,30 @@ TIPS
|
||||
|
||||
Then for each CSV record in turn:
|
||||
|
||||
o test all if blocks. If any of them contain a end rule, skip all re-
|
||||
maining CSV records. Otherwise if any of them contain a skip rule,
|
||||
skip that many CSV records. If there are multiple matched skip
|
||||
o test all if blocks. If any of them contain a end rule, skip all re-
|
||||
maining CSV records. Otherwise if any of them contain a skip rule,
|
||||
skip that many CSV records. If there are multiple matched skip
|
||||
rules, the first one wins.
|
||||
|
||||
o collect all field assignments at top level and in matched if blocks.
|
||||
When there are multiple assignments for a field, keep only the last
|
||||
o collect all field assignments at top level and in matched if blocks.
|
||||
When there are multiple assignments for a field, keep only the last
|
||||
one.
|
||||
|
||||
o compute a value for each hledger field - either the one that was as-
|
||||
o compute a value for each hledger field - either the one that was as-
|
||||
signed to it (and interpolate the %CSVFIELDNAME references), or a de-
|
||||
fault
|
||||
|
||||
o generate a synthetic hledger transaction from these values.
|
||||
|
||||
This is all part of the CSV reader, one of several readers hledger can
|
||||
use to parse input files. When all files have been read successfully,
|
||||
the transactions are passed as input to whichever hledger command the
|
||||
This is all part of the CSV reader, one of several readers hledger can
|
||||
use to parse input files. When all files have been read successfully,
|
||||
the transactions are passed as input to whichever hledger command the
|
||||
user specified.
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@ -844,7 +899,7 @@ COPYRIGHT
|
||||
|
||||
|
||||
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-
|
||||
dot(5), ledger(1)
|
||||
|
||||
|
@ -72,7 +72,7 @@ reordered. See also the import command.
|
||||
|
||||
This command also supports the output destination and output format
|
||||
options The output formats supported are txt, csv, and (experimental)
|
||||
json.
|
||||
json and sql.
|
||||
|
||||
Here's an example of print's CSV output:
|
||||
|
||||
|
@ -1070,7 +1070,8 @@ $ hledger print -o - # write to stdout (the default)
|
||||
Some commands (print, register, the balance commands) offer a choice of
|
||||
output format.
|
||||
In addition to the usual plain text format (\f[C]txt\f[R]), there are
|
||||
CSV (\f[C]csv\f[R]), HTML (\f[C]html\f[R]) and JSON (\f[C]json\f[R]).
|
||||
CSV (\f[C]csv\f[R]), HTML (\f[C]html\f[R]), JSON (\f[C]json\f[R]) and
|
||||
SQL (\f[C]sql\f[R]).
|
||||
This is controlled by the \f[C]-O/--output-format\f[R] option:
|
||||
.IP
|
||||
.nf
|
||||
@ -1119,6 +1120,20 @@ your control.
|
||||
We hope this approach will not cause problems in practice; if you find
|
||||
otherwise, please let us know.
|
||||
(Cf #1195)
|
||||
.PP
|
||||
Notes about SQL output:
|
||||
.IP \[bu] 2
|
||||
SQL output is also marked experimental, and much like JSON could use
|
||||
real-world feedback.
|
||||
.IP \[bu] 2
|
||||
SQL output is expected to work with sqlite, MySQL and PostgreSQL
|
||||
.IP \[bu] 2
|
||||
SQL output is structured with the expectations that statements will be
|
||||
executed in the empty database.
|
||||
If you already have tables created via SQL output of hledger, you would
|
||||
probably want to either clear tables of existing data (via
|
||||
\f[C]delete\f[R] or \f[C]truncate\f[R] SQL statements) or drop tables
|
||||
completely as otherwise your postings will be duped.
|
||||
.SS Regular expressions
|
||||
.PP
|
||||
hledger uses regular expressions in a number of places:
|
||||
@ -3763,7 +3778,7 @@ See also the import command.
|
||||
.PP
|
||||
This command also supports the output destination and output format
|
||||
options The output formats supported are \f[C]txt\f[R], \f[C]csv\f[R],
|
||||
and (experimental) \f[C]json\f[R].
|
||||
and (experimental) \f[C]json\f[R] and \f[C]sql\f[R].
|
||||
.PP
|
||||
Here\[aq]s an example of print\[aq]s CSV output:
|
||||
.IP
|
||||
|
@ -1007,8 +1007,8 @@ File: hledger.info, Node: Output format, Next: Regular expressions, Prev: Out
|
||||
|
||||
Some commands (print, register, the balance commands) offer a choice of
|
||||
output format. In addition to the usual plain text format ('txt'),
|
||||
there are CSV ('csv'), HTML ('html') and JSON ('json'). This is
|
||||
controlled by the '-O/--output-format' option:
|
||||
there are CSV ('csv'), HTML ('html'), JSON ('json') and SQL ('sql').
|
||||
This is controlled by the '-O/--output-format' option:
|
||||
|
||||
$ hledger print -O csv
|
||||
|
||||
@ -1039,6 +1039,20 @@ $ hledger balancesheet -o foo.txt -O html # write HTML to foo.txt
|
||||
your control. We hope this approach will not cause problems in
|
||||
practice; if you find otherwise, please let us know. (Cf #1195)
|
||||
|
||||
Notes about SQL output:
|
||||
|
||||
* SQL output is also marked experimental, and much like JSON could
|
||||
use real-world feedback.
|
||||
|
||||
* SQL output is expected to work with sqlite, MySQL and PostgreSQL
|
||||
|
||||
* SQL output is structured with the expectations that statements will
|
||||
be executed in the empty database. If you already have tables
|
||||
created via SQL output of hledger, you would probably want to
|
||||
either clear tables of existing data (via 'delete' or 'truncate'
|
||||
SQL statements) or drop tables completely as otherwise your
|
||||
postings will be duped.
|
||||
|
||||
|
||||
File: hledger.info, Node: Regular expressions, Next: Smart dates, Prev: Output format, Up: OPTIONS
|
||||
|
||||
@ -3192,7 +3206,7 @@ reordered. See also the import command.
|
||||
|
||||
This command also supports the output destination and output format
|
||||
options The output formats supported are 'txt', 'csv', and
|
||||
(experimental) 'json'.
|
||||
(experimental) 'json' and 'sql'.
|
||||
|
||||
Here's an example of print's CSV output:
|
||||
|
||||
@ -3902,153 +3916,153 @@ Node: Output destination32183
|
||||
Ref: #output-destination32335
|
||||
Node: Output format32760
|
||||
Ref: #output-format32910
|
||||
Node: Regular expressions34492
|
||||
Ref: #regular-expressions34649
|
||||
Node: Smart dates36385
|
||||
Ref: #smart-dates36536
|
||||
Node: Report start & end date37897
|
||||
Ref: #report-start-end-date38069
|
||||
Node: Report intervals39566
|
||||
Ref: #report-intervals39731
|
||||
Node: Period expressions40121
|
||||
Ref: #period-expressions40281
|
||||
Node: Depth limiting44417
|
||||
Ref: #depth-limiting44561
|
||||
Node: Pivoting44893
|
||||
Ref: #pivoting45016
|
||||
Node: Valuation46692
|
||||
Ref: #valuation46794
|
||||
Node: -B Cost47483
|
||||
Ref: #b-cost47587
|
||||
Node: -V Value47720
|
||||
Ref: #v-value47866
|
||||
Node: -X Value in specified commodity48061
|
||||
Ref: #x-value-in-specified-commodity48260
|
||||
Node: Valuation date48409
|
||||
Ref: #valuation-date48577
|
||||
Node: Market prices48987
|
||||
Ref: #market-prices49167
|
||||
Node: --infer-value market prices from transactions49944
|
||||
Ref: #infer-value-market-prices-from-transactions50193
|
||||
Node: Valuation commodity51475
|
||||
Ref: #valuation-commodity51684
|
||||
Node: Simple valuation examples52910
|
||||
Ref: #simple-valuation-examples53112
|
||||
Node: --value Flexible valuation53771
|
||||
Ref: #value-flexible-valuation53979
|
||||
Node: More valuation examples55926
|
||||
Ref: #more-valuation-examples56135
|
||||
Node: Effect of valuation on reports58140
|
||||
Ref: #effect-of-valuation-on-reports58328
|
||||
Node: COMMANDS63849
|
||||
Ref: #commands63957
|
||||
Node: accounts65041
|
||||
Ref: #accounts65139
|
||||
Node: activity65838
|
||||
Ref: #activity65948
|
||||
Node: add66331
|
||||
Ref: #add66430
|
||||
Node: balance69169
|
||||
Ref: #balance69280
|
||||
Node: Classic balance report70738
|
||||
Ref: #classic-balance-report70911
|
||||
Node: Customising the classic balance report72280
|
||||
Ref: #customising-the-classic-balance-report72508
|
||||
Node: Colour support74584
|
||||
Ref: #colour-support74751
|
||||
Node: Flat mode74924
|
||||
Ref: #flat-mode75072
|
||||
Node: Depth limited balance reports75485
|
||||
Ref: #depth-limited-balance-reports75670
|
||||
Node: Percentages76126
|
||||
Ref: #percentages76292
|
||||
Node: Multicolumn balance report77429
|
||||
Ref: #multicolumn-balance-report77609
|
||||
Node: Budget report82871
|
||||
Ref: #budget-report83014
|
||||
Node: Nested budgets88280
|
||||
Ref: #nested-budgets88392
|
||||
Ref: #output-format-191873
|
||||
Node: balancesheet92070
|
||||
Ref: #balancesheet92206
|
||||
Node: balancesheetequity93672
|
||||
Ref: #balancesheetequity93821
|
||||
Node: cashflow94544
|
||||
Ref: #cashflow94672
|
||||
Node: check-dates95851
|
||||
Ref: #check-dates95978
|
||||
Node: check-dupes96257
|
||||
Ref: #check-dupes96381
|
||||
Node: close96674
|
||||
Ref: #close96788
|
||||
Node: close usage98310
|
||||
Ref: #close-usage98403
|
||||
Node: commodities101216
|
||||
Ref: #commodities101343
|
||||
Node: descriptions101425
|
||||
Ref: #descriptions101553
|
||||
Node: diff101734
|
||||
Ref: #diff101840
|
||||
Node: files102887
|
||||
Ref: #files102987
|
||||
Node: help103134
|
||||
Ref: #help103234
|
||||
Node: import104315
|
||||
Ref: #import104429
|
||||
Node: Importing balance assignments105322
|
||||
Ref: #importing-balance-assignments105470
|
||||
Node: incomestatement106119
|
||||
Ref: #incomestatement106252
|
||||
Node: notes107739
|
||||
Ref: #notes107852
|
||||
Node: payees107978
|
||||
Ref: #payees108084
|
||||
Node: prices108242
|
||||
Ref: #prices108348
|
||||
Node: print108689
|
||||
Ref: #print108799
|
||||
Node: print-unique113585
|
||||
Ref: #print-unique113711
|
||||
Node: register113996
|
||||
Ref: #register114123
|
||||
Node: Custom register output118295
|
||||
Ref: #custom-register-output118424
|
||||
Node: register-match119761
|
||||
Ref: #register-match119895
|
||||
Node: rewrite120246
|
||||
Ref: #rewrite120361
|
||||
Node: Re-write rules in a file122216
|
||||
Ref: #re-write-rules-in-a-file122350
|
||||
Node: Diff output format123560
|
||||
Ref: #diff-output-format123729
|
||||
Node: rewrite vs print --auto124821
|
||||
Ref: #rewrite-vs.-print---auto125000
|
||||
Node: roi125556
|
||||
Ref: #roi125654
|
||||
Node: stats126666
|
||||
Ref: #stats126765
|
||||
Node: tags127553
|
||||
Ref: #tags127651
|
||||
Node: test127945
|
||||
Ref: #test128053
|
||||
Node: Add-on commands128800
|
||||
Ref: #add-on-commands128917
|
||||
Node: ui130260
|
||||
Ref: #ui130348
|
||||
Node: web130402
|
||||
Ref: #web130505
|
||||
Node: iadd130621
|
||||
Ref: #iadd130732
|
||||
Node: interest130814
|
||||
Ref: #interest130921
|
||||
Node: ENVIRONMENT131161
|
||||
Ref: #environment131273
|
||||
Node: FILES132102
|
||||
Ref: #files-1132205
|
||||
Node: LIMITATIONS132418
|
||||
Ref: #limitations132537
|
||||
Node: TROUBLESHOOTING133279
|
||||
Ref: #troubleshooting133392
|
||||
Node: Regular expressions35077
|
||||
Ref: #regular-expressions35234
|
||||
Node: Smart dates36970
|
||||
Ref: #smart-dates37121
|
||||
Node: Report start & end date38482
|
||||
Ref: #report-start-end-date38654
|
||||
Node: Report intervals40151
|
||||
Ref: #report-intervals40316
|
||||
Node: Period expressions40706
|
||||
Ref: #period-expressions40866
|
||||
Node: Depth limiting45002
|
||||
Ref: #depth-limiting45146
|
||||
Node: Pivoting45478
|
||||
Ref: #pivoting45601
|
||||
Node: Valuation47277
|
||||
Ref: #valuation47379
|
||||
Node: -B Cost48068
|
||||
Ref: #b-cost48172
|
||||
Node: -V Value48305
|
||||
Ref: #v-value48451
|
||||
Node: -X Value in specified commodity48646
|
||||
Ref: #x-value-in-specified-commodity48845
|
||||
Node: Valuation date48994
|
||||
Ref: #valuation-date49162
|
||||
Node: Market prices49572
|
||||
Ref: #market-prices49752
|
||||
Node: --infer-value market prices from transactions50529
|
||||
Ref: #infer-value-market-prices-from-transactions50778
|
||||
Node: Valuation commodity52060
|
||||
Ref: #valuation-commodity52269
|
||||
Node: Simple valuation examples53495
|
||||
Ref: #simple-valuation-examples53697
|
||||
Node: --value Flexible valuation54356
|
||||
Ref: #value-flexible-valuation54564
|
||||
Node: More valuation examples56511
|
||||
Ref: #more-valuation-examples56720
|
||||
Node: Effect of valuation on reports58725
|
||||
Ref: #effect-of-valuation-on-reports58913
|
||||
Node: COMMANDS64434
|
||||
Ref: #commands64542
|
||||
Node: accounts65626
|
||||
Ref: #accounts65724
|
||||
Node: activity66423
|
||||
Ref: #activity66533
|
||||
Node: add66916
|
||||
Ref: #add67015
|
||||
Node: balance69754
|
||||
Ref: #balance69865
|
||||
Node: Classic balance report71323
|
||||
Ref: #classic-balance-report71496
|
||||
Node: Customising the classic balance report72865
|
||||
Ref: #customising-the-classic-balance-report73093
|
||||
Node: Colour support75169
|
||||
Ref: #colour-support75336
|
||||
Node: Flat mode75509
|
||||
Ref: #flat-mode75657
|
||||
Node: Depth limited balance reports76070
|
||||
Ref: #depth-limited-balance-reports76255
|
||||
Node: Percentages76711
|
||||
Ref: #percentages76877
|
||||
Node: Multicolumn balance report78014
|
||||
Ref: #multicolumn-balance-report78194
|
||||
Node: Budget report83456
|
||||
Ref: #budget-report83599
|
||||
Node: Nested budgets88865
|
||||
Ref: #nested-budgets88977
|
||||
Ref: #output-format-192458
|
||||
Node: balancesheet92655
|
||||
Ref: #balancesheet92791
|
||||
Node: balancesheetequity94257
|
||||
Ref: #balancesheetequity94406
|
||||
Node: cashflow95129
|
||||
Ref: #cashflow95257
|
||||
Node: check-dates96436
|
||||
Ref: #check-dates96563
|
||||
Node: check-dupes96842
|
||||
Ref: #check-dupes96966
|
||||
Node: close97259
|
||||
Ref: #close97373
|
||||
Node: close usage98895
|
||||
Ref: #close-usage98988
|
||||
Node: commodities101801
|
||||
Ref: #commodities101928
|
||||
Node: descriptions102010
|
||||
Ref: #descriptions102138
|
||||
Node: diff102319
|
||||
Ref: #diff102425
|
||||
Node: files103472
|
||||
Ref: #files103572
|
||||
Node: help103719
|
||||
Ref: #help103819
|
||||
Node: import104900
|
||||
Ref: #import105014
|
||||
Node: Importing balance assignments105907
|
||||
Ref: #importing-balance-assignments106055
|
||||
Node: incomestatement106704
|
||||
Ref: #incomestatement106837
|
||||
Node: notes108324
|
||||
Ref: #notes108437
|
||||
Node: payees108563
|
||||
Ref: #payees108669
|
||||
Node: prices108827
|
||||
Ref: #prices108933
|
||||
Node: print109274
|
||||
Ref: #print109384
|
||||
Node: print-unique114180
|
||||
Ref: #print-unique114306
|
||||
Node: register114591
|
||||
Ref: #register114718
|
||||
Node: Custom register output118890
|
||||
Ref: #custom-register-output119019
|
||||
Node: register-match120356
|
||||
Ref: #register-match120490
|
||||
Node: rewrite120841
|
||||
Ref: #rewrite120956
|
||||
Node: Re-write rules in a file122811
|
||||
Ref: #re-write-rules-in-a-file122945
|
||||
Node: Diff output format124155
|
||||
Ref: #diff-output-format124324
|
||||
Node: rewrite vs print --auto125416
|
||||
Ref: #rewrite-vs.-print---auto125595
|
||||
Node: roi126151
|
||||
Ref: #roi126249
|
||||
Node: stats127261
|
||||
Ref: #stats127360
|
||||
Node: tags128148
|
||||
Ref: #tags128246
|
||||
Node: test128540
|
||||
Ref: #test128648
|
||||
Node: Add-on commands129395
|
||||
Ref: #add-on-commands129512
|
||||
Node: ui130855
|
||||
Ref: #ui130943
|
||||
Node: web130997
|
||||
Ref: #web131100
|
||||
Node: iadd131216
|
||||
Ref: #iadd131327
|
||||
Node: interest131409
|
||||
Ref: #interest131516
|
||||
Node: ENVIRONMENT131756
|
||||
Ref: #environment131868
|
||||
Node: FILES132697
|
||||
Ref: #files-1132800
|
||||
Node: LIMITATIONS133013
|
||||
Ref: #limitations133132
|
||||
Node: TROUBLESHOOTING133874
|
||||
Ref: #troubleshooting133987
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user