docs: move most docs to the wiki
I've moved the installation and developer guides, FAQ and how-tos from hledger.org (yst & git) to hledger.org/wiki (dokuwiki) and tried to integrate their navigation bars two as best I can. Using just one or the other would be nice, but I don't think I can quite do that; it seems the manual at least should be revision controlled along with the code.
This commit is contained in:
		
							parent
							
								
									a551b76a56
								
							
						
					
					
						commit
						9bf447184b
					
				
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @ -555,7 +555,7 @@ cleandocs: cleansite | ||||
| # Requires yst (cabal install yst)
 | ||||
| .PHONY: site | ||||
| site: olddocs | ||||
| 	cd site; yst | ||||
| 	-cd site; yst | ||||
| 
 | ||||
| cleansite: cleanolddocs | ||||
| 	rm -rf site/site/* | ||||
|  | ||||
| @ -1,49 +0,0 @@ | ||||
| # How to use account aliases | ||||
| 
 | ||||
| Here's an example of using [account aliases](MANUAL.html#account-aliases). | ||||
| 
 | ||||
| Say a sole proprietor has a `personal.journal`: | ||||
| 
 | ||||
|     2014/1/2 | ||||
|         expenses:food  $1 | ||||
|         assets:cash | ||||
| 
 | ||||
| and a `business.journal`: | ||||
| 
 | ||||
|     2014/1/1 | ||||
|         expenses:office supplies  $1 | ||||
|         assets:business checking | ||||
| 
 | ||||
| So each entity (the business owner, and the business) has their own file with its own simple chart of accounts. | ||||
| However, at tax reporting time we need to view these as a single entity (at least in the US). | ||||
| In `unified.journal`, we include both files, and rewrite the personal | ||||
| account names to fit into the business chart of accounts, | ||||
| 
 | ||||
|     alias expenses    = equity:draw:personal | ||||
|     alias assets:cash = assets:personal cash | ||||
|     include personal.journal | ||||
|     end aliases | ||||
| 
 | ||||
|     include business.journal | ||||
| 
 | ||||
| Now we can see the data from both files at once, and the personal account names have changed: | ||||
| 
 | ||||
|     $ hledger -f unified.journal print | ||||
|     2014/01/01                                    # from business.journal - no aliases applied | ||||
|         expenses:office supplies            $1 | ||||
|         assets:business checking           $-1 | ||||
| 
 | ||||
|     2014/01/02                                    # from personal.journal | ||||
|         equity:draw:personal:food            $1   # <- was expenses:food | ||||
|         assets:personal cash                $-1   # <- was assets:cash | ||||
| 
 | ||||
| You can also specify aliases on the command line. This could be useful to | ||||
| quickly rewrite account names when sharing a report with someone else, such as | ||||
| your accountant: | ||||
| 
 | ||||
|     $ hledger --alias 'my earning=income:business' ... | ||||
| 
 | ||||
| Command-line alias options are applied after any alias directives in the | ||||
| journal.  At most one alias directive and one alias option will be applied | ||||
| to each account name. | ||||
| 
 | ||||
							
								
								
									
										52
									
								
								doc/CSV.md
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								doc/CSV.md
									
									
									
									
									
								
							| @ -1,52 +0,0 @@ | ||||
| # How to read CSV files | ||||
| 
 | ||||
| Here's a quick example of [converting a CSV file](MANUAL.html#csv-files). | ||||
| 
 | ||||
| Say we have downloaded `checking.csv` from a bank for the first time: | ||||
| 
 | ||||
|     "Date","Note","Amount" | ||||
|     "2012/3/22","DEPOSIT","50.00" | ||||
|     "2012/3/23","TRANSFER TO SAVINGS","-10.00" | ||||
| 
 | ||||
| We tell hledger how to intepret this with a file named `checking.csv.rules`, using the [rules syntax](MANUAL.html#csv-files). Eg: | ||||
| 
 | ||||
|     # skip the first CSV line (headings) | ||||
|     skip 1 | ||||
| 
 | ||||
|     # use the first three fields in each CSV record as transaction date, description and amount respectively | ||||
|     fields   date, description, amount | ||||
| 
 | ||||
|     # prepend $ to CSV amounts | ||||
|     currency $ | ||||
| 
 | ||||
|     # always set the first account to assets:bank:checking | ||||
|     account1 assets:bank:checking | ||||
| 
 | ||||
|     # if the CSV record contains ‘SAVINGS’, set the second account to assets:bank:savings | ||||
|     # (if not set, it will be expenses:unknown or income:unknown) | ||||
|     if ~ SAVINGS | ||||
|       account2 assets:bank:savings | ||||
| 
 | ||||
| Now hledger can read this CSV file as journal data: | ||||
| 
 | ||||
|     $ hledger -f checking.csv print | ||||
|     using conversion rules file checking.csv.rules | ||||
|     2012/03/22 DEPOSIT | ||||
|         income:unknown             $-50.00 | ||||
|         assets:bank:checking        $50.00 | ||||
| 
 | ||||
|     2012/03/23 TRANSFER TO SAVINGS | ||||
|         assets:bank:savings         $10.00 | ||||
|         assets:bank:checking       $-10.00 | ||||
| 
 | ||||
| We might save this output as `checking.journal`, and/or merge it (manually) into the main journal file. | ||||
| We could also run other commands: | ||||
| 
 | ||||
|     $ hledger -f checking.csv balance | ||||
|     using conversion rules file checking.csv.rules | ||||
|                   $50.00  assets:bank | ||||
|                   $40.00    checking | ||||
|                   $10.00    savings | ||||
|                  $-50.00  income:unknown | ||||
|     -------------------- | ||||
|                        0 | ||||
							
								
								
									
										291
									
								
								doc/DEVELOP.md
									
									
									
									
									
								
							
							
						
						
									
										291
									
								
								doc/DEVELOP.md
									
									
									
									
									
								
							| @ -1,291 +0,0 @@ | ||||
| # Developer guide | ||||
| 
 | ||||
| **Quick links:** | ||||
| 
 | ||||
| **hledger released version**\ | ||||
| [release notes](NEWS.html)\ | ||||
| [hledger](http://hackage.haskell.org/package/hledger), | ||||
| [hledger-web](http://hackage.haskell.org/package/hledger-web), | ||||
| [hledger-interest](http://hackage.haskell.org/package/hledger-interest), | ||||
| [hledger-irr](http://hackage.haskell.org/package/hledger-irr), | ||||
| [hledger-vty](http://hackage.haskell.org/package/hledger-vty), | ||||
| [hledger-chart](http://hackage.haskell.org/package/hledger-chart), | ||||
| [hledger-lib](http://hackage.haskell.org/package/hledger-lib) | ||||
| packages\ | ||||
| <!-- [hledger-web demo](http://demo.hledger.org) --> | ||||
| <!-- <script type="text/javascript" src="http://haskell.org/hoogle/datadir/resources/jquery-1.4.2.js"></script> --> | ||||
| <script type="text/javascript" src="http://haskell.org/hoogle/datadir/resources/hoogle.js"></script> | ||||
| <form action="http://haskell.org/hoogle/" method="get" style="display:inline; margin:0; padding:0;"> | ||||
| <input type="hidden" name="prefix" value="+hledger +hledger-lib +hledger-web +hledger-vty +hledger-chart" /> | ||||
| <span style="white-space:nowrap;" | ||||
| ><input type="text" name="hoogle" id="hoogle" accesskey="1" size="30" | ||||
| /><input type="submit" value="search API with hoogle" | ||||
| /></span> | ||||
| </form> | ||||
| 
 | ||||
| **hledger development version**<br> | ||||
| [Get it](#how-to-set-up-for-development), | ||||
| [browse it](http://github.com/simonmichael/hledger), | ||||
| [changes](http://github.com/simonmichael/hledger/commits), | ||||
| [CHANGES](http://starlogs.net/#simonmichael/hledger) (turn up your volume!) | ||||
| <!-- [hledger-web dev demo](http://demo.hledger.org:5001) --> | ||||
| <br> | ||||
| [build](http://hydra.cryp.to:8080/project/hledger), | ||||
| [dependencies](http://packdeps.haskellers.com/feed/?needle=hledger) | ||||
| <!-- [haddock coverage](http://hledger.org/profs/haddock-coverage), --> | ||||
| <!-- [unit test coverage](http://hledger.org/profs/coverage/hpc_index_fun.html), --> | ||||
| <!-- [benchmark](http://hledger.org/profs/latest.bench) --> | ||||
| <!-- [profile](http://hledger.org/profs/latest.prof), --> | ||||
| <!-- [heap](http://hledger.org/profs/latest.ps) --> | ||||
| reports\ | ||||
| <!-- [developer notes](http://github.com/simonmichael/hledger/NOTES.org)\ --> | ||||
| <!-- [browse dev API docs](http://hledger.org/api/frames.html) --> | ||||
| 
 | ||||
| \ | ||||
| 
 | ||||
| 
 | ||||
| ## How to.. | ||||
| 
 | ||||
| New contributors of all levels are most welcome. | ||||
| Here are some tips to help you get productive on the hledger project. | ||||
| 
 | ||||
| ### how to suggest enhancements | ||||
| 
 | ||||
| Suggestions and feature requests are easy to make, less easy to | ||||
| research, and hard to implement.  And, alas! We don't have a team of | ||||
| sleek, well-fed, idle coders standing by to implement everybody's | ||||
| wishes. (Please | ||||
| [help change that](#how-to-set-up-for-hledger-development)). | ||||
| 
 | ||||
| Wishes *are* welcome feedback, but we don't want them to pile up and | ||||
| obscure bugs and other developer priorities, so we manage them with discussion | ||||
| and optionally as cards on a trello board.  | ||||
| The current recommendation is | ||||
| 
 | ||||
| 1. **discuss/research first**\ | ||||
|    Is your wish already on the [trello wishlist/planning board](http://hledger.org/trello) | ||||
|    or [bug tracker](http://hledger.org/bugs) ?\ | ||||
|    Perhaps discuss it on [irc](irc://irc.freenode.net/#ledger), the [mail list](http://hledger.org/list) or trello ? | ||||
| 
 | ||||
| 2. **report wishes on trello, bugs in the bug tracker**\ | ||||
|    Is it a problem with the released and documented functionality ? report in the [bug tracker](http://hledger.org/bugs)\ | ||||
|    Is it a wish ? add a card on the [trello board](http://hledger.org/trello), if needed | ||||
| 
 | ||||
| 3. **don't sweat it**\ | ||||
|    Or, do what you think best. If a wish does land in the bug tracker, it gets the WISH label. | ||||
| 
 | ||||
| ### how to report problems | ||||
| 
 | ||||
| - check for related issues in the [bug tracker](http://hledger.org/bugs) or in the [mail list archive](http://hledger.org/list) | ||||
| - discuss/confirm the issue on irc or list | ||||
| - report new issues in the bug tracker | ||||
| <!-- - test and share problem journal snippets at paste . hledger.org --> | ||||
| 
 | ||||
| ### how to help with testing | ||||
| 
 | ||||
| - review and test our documentation and web presence | ||||
| - download and test the binaries on your platform | ||||
| - test installing via cabal | ||||
| - use the tools and test functionality, usability, browser compatibility, ui layout etc. | ||||
| - check that `hledger test` reports no failures | ||||
| - [run the developer tests](#how-to-run-the-tests) | ||||
| - discuss/report problems via irc/mail list/bug tracker | ||||
| 
 | ||||
| ### how to help with bug tracking | ||||
| 
 | ||||
| - get to know the [bug tracker](http://hledger.org/bugs) and its contents | ||||
| - research and update issues | ||||
| - some convenient url shortcuts:   | ||||
|   [`hledger.org/bugs`](http://hledger.org/bugs)   | ||||
|   [`hledger.org/bugs/new`](http://hledger.org/bugs/new)   | ||||
|   `hledger.org/bugs/N` | ||||
| 
 | ||||
| ### how to set up for development | ||||
| 
 | ||||
| 1. get an up-to-date [ghc](http://haskell.org/ghc), at least 7.0 and preferably 7.6 | ||||
| 2. there's probably no need to install the [haskell platform](http://haskell.org/platform) now, but you could | ||||
| 3. it's probably worth getting the latest and best cabal: `cabal update; cabal install cabal-install` | ||||
| 4. ensure you have [git](http://git-scm.com) installed | ||||
| 5. the hledger Makefile assumes GNU Make, so on some platforms you may need to spell "make" as "gmake" | ||||
| 
 | ||||
| - get the hledger repo: | ||||
|    | ||||
|         git clone git@github.com:simonmichael/hledger.git | ||||
|         cd hledger | ||||
|          | ||||
| - install packages required to build hledger and add-ons, or as many of them as possible: | ||||
|    | ||||
|         cabal update | ||||
|         make install | ||||
| 
 | ||||
|     This will also try to cabal install development builds of the hledger | ||||
|     executables, so ghc-pkg unregister those afterwards if you don't want | ||||
|     that. | ||||
| 
 | ||||
| - try building with make: | ||||
| 
 | ||||
|         make bin/hledgerdev | ||||
| 
 | ||||
|     This is usually quicker and simpler than fiddling with multiple cabal packages during development. | ||||
|     Note this executable will not be as optimised as the normal cabal build, and has the "dev" suffix | ||||
|     as a reminder of this. | ||||
| 
 | ||||
| - try auto-building with sp: | ||||
| 
 | ||||
|         make auto   # or autoweb | ||||
| 
 | ||||
|     You'll need to follow the instructions to install `sp`. | ||||
|     This is how I do most hledger development. It will recompile whenever you save changes to source files. | ||||
|          | ||||
| ### how to get your changes accepted | ||||
| 
 | ||||
| Follow the usual github workflow: | ||||
| 
 | ||||
| - fork the main hledger repo on github, | ||||
| - git clone it to your local machine, | ||||
| - git commit, after (?) pulling and merging the latest upstream changes | ||||
| - git push back to github, | ||||
| - open a pull request on github, | ||||
| - follow up on any discussion there. | ||||
|    | ||||
| If you're new to this process, [help.github.com](http://help.github.com) may be useful. | ||||
| 
 | ||||
| ### how to improve the documentation | ||||
| 
 | ||||
| - get familiar with the website and documentation online, review and test | ||||
| - get familiar with the site/doc source files (see Makefile) | ||||
| - set up for hledger development | ||||
| - send patches with names prefixed with "doc: " (or "site: ") | ||||
| 
 | ||||
| ### how to run the tests | ||||
| 
 | ||||
| - set up for hledger development | ||||
| - cabal install shelltestrunner | ||||
| - make test | ||||
| 
 | ||||
| ### how to add a test | ||||
| 
 | ||||
| - identify what to test | ||||
| - choose the test type: unit ? functional ? benchmark ? | ||||
| - currently expected to pass or fail ? | ||||
| - figure out where it goes | ||||
| - write test, verify expected result | ||||
| - get it committed | ||||
| 
 | ||||
| ### how to fix a bug or add a feature | ||||
| 
 | ||||
| - research, discuss, validate the issue/feature on irc/list/bug tracker | ||||
| - look for related tests, run the tests and check they are passing | ||||
| - add a test ? | ||||
| - develop a patch | ||||
| - include any related issue numbers in the patch name, eg: "fix for blah blah (#NNN)" | ||||
| - get it committed | ||||
| 
 | ||||
| ### how to become a contributor | ||||
| 
 | ||||
| - after getting one or more patches committed, read and sign the [contributor list & agreement](CONTRIBUTORS.html) | ||||
| - or, [ask](#how-to-get-help) to be added | ||||
| 
 | ||||
| ### how to do code review | ||||
| 
 | ||||
| - review and discuss new pull requests and commits on github | ||||
| - set up for development and test the latest changes in your own repo | ||||
| - read the existing [code docs and source](#quick-links) | ||||
| - send feedback or discuss via irc or list | ||||
| 
 | ||||
| ### how to help with packaging | ||||
| 
 | ||||
| - package hledger for linux distros, macports, etc. | ||||
| - develop mac/windows installers | ||||
| - find and assist distro packagers/installer developers | ||||
| 
 | ||||
| ### how to help with project management | ||||
| 
 | ||||
| - clarify/update goals and principles | ||||
| - monitor, report on project progress and performance | ||||
| - research, compare and report on successful projects, related projects | ||||
| - identify collaboration opportunities | ||||
| - marketing, communication, outreach | ||||
| - release management, roadmap planning | ||||
| 
 | ||||
| ## Project overview | ||||
| 
 | ||||
| A rough overview/blueprint for the hledger project. | ||||
| 
 | ||||
| ### mission, principles, goals | ||||
| 
 | ||||
| The hledger project aims to produce: | ||||
| 
 | ||||
| - a practical, accessible, dependable tool for end users | ||||
| - a useful library and toolbox for finance-minded haskell programmers | ||||
| - a successful, time-and-money-solvent project within a thriving ecosystem of financial software projects. | ||||
| 
 | ||||
| ### roles and activities | ||||
| 
 | ||||
| - newcomer/potential user | ||||
| - user | ||||
| - library user | ||||
| - field tester | ||||
| - bug wrangler | ||||
| - support | ||||
| - documentor | ||||
| - qa | ||||
| - developer | ||||
| - packager | ||||
| - communicator | ||||
| - project manager | ||||
| 
 | ||||
| ### documentation | ||||
| 
 | ||||
| - website | ||||
| - user manual | ||||
| - developer guide | ||||
| - code documentation: haddock | ||||
| - various developer reports | ||||
| - developer notes outline | ||||
| - blurbs: in cabal files, module headers, google project, repo message of the day.. | ||||
| 
 | ||||
| ### quality assurance | ||||
| 
 | ||||
| - unit tests (HUnit, make unittest) | ||||
| - functional tests (shelltestrunner, make functest) | ||||
| - performance tests (simplebench, make bench) | ||||
| - documentation tests (make haddocktest + manual) | ||||
| - ui tests (manual) | ||||
| - installation tests (manual) | ||||
| 
 | ||||
| ### code | ||||
| 
 | ||||
| - the hledger repo is hosted on github.com: | ||||
|   [http://github.com/simonmichael/hledger](http://github.com/simonmichael/hledger). | ||||
|   (You can also jump there via [hledger.org/code](http://hledger.org/code) or code.hledger.org). | ||||
| 
 | ||||
| <!-- ### release process --> | ||||
| 
 | ||||
| <!-- ### roadmap --> | ||||
| 
 | ||||
| <!-- ### communication and collaboration --> | ||||
| 
 | ||||
| <!-- ### web presence and hosting setup --> | ||||
| 
 | ||||
| <!-- ### finances and other resources --> | ||||
| 
 | ||||
| <!-- ### licensing and legal issues --> | ||||
| 
 | ||||
| <!-- ### contributors and credits --> | ||||
| 
 | ||||
| ## Related projects | ||||
| 
 | ||||
| - I have a few older bits and pieces [here](http://joyful.com/Ledger) | ||||
| - John Wiegley's [ledger](http://wiki.github.com/jwiegley/ledger) inspired hledger. | ||||
| - [ledger-autosync](https://bitbucket.org/egh/ledger-autosync) downloads and converts bank OFX data for ledger or hledger | ||||
| - Tim Docker's [ledger-reports](http://dockerz.net/repos/ledger-reports) builds on hledger to generate | ||||
|   [html reports](http://dockerz.net/software/hledger_report_sample/report.html) | ||||
| - [beancount](https://furius.ca/beancount/) is another ledger clone, in python | ||||
| - h/ledger inspired Omari Norman's [penny](https://github.com/massysett/penny) | ||||
| - and Uwe Hollerbach's [umm](http://hackage.haskell.org/package/UMM) | ||||
| - [http://darcsden.com/alex/bill](http://darcsden.com/alex/bill), [http://darcsden.com/alex/bill-atomo](http://darcsden.com/alex/bill-atomo), [http://darcsden.com/alex/bill-scheme](http://darcsden.com/alex/bill-scheme) - a time-tracking and billing app | ||||
| - [http://darcsden.com/ozamosi/debts](http://darcsden.com/ozamosi/debts) - Silly debt tracking webapp | ||||
| - [http://darcsden.com/housetab-multi](http://darcsden.com/dbp/housetab-multi), [housetab.org](http://housetab.org) - a webapp to manage expenses between a group of friends. | ||||
| 
 | ||||
| <!-- <a href="https://www.google.com/analytics/reporting/?reset=1&id=15489822" accesskey="a"></a> --> | ||||
							
								
								
									
										25
									
								
								doc/DOCS.md
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								doc/DOCS.md
									
									
									
									
									
								
							| @ -1,25 +0,0 @@ | ||||
| # More Docs | ||||
| 
 | ||||
| See also: | ||||
| 
 | ||||
| Ledger's informative [manual](http://ledger-cli.org/3.0/doc/ledger3.html) | ||||
| 
 | ||||
| [Non-Profit Accounting With Ledger CLI, A Tutorial](https://gitorious.org/ledger/npo-ledger-cli/source/npo-ledger-cli-tutorial.md) | ||||
| 
 | ||||
| [Accounting For Dragons](http://podcastle.org/2009/10/09/pc-miniature-38-accounting-for-dragons) - essential tips | ||||
| 
 | ||||
| Wikipedia:\ | ||||
|   [Accountancy](https://en.wikipedia.org/wiki/Accountancy)\ | ||||
|   [Bookkeeping](https://en.wikipedia.org/wiki/Bookkeeping)\ | ||||
|   [Double-entry bookkeeping system](https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system)\ | ||||
|   etc. | ||||
| 
 | ||||
| WikiWikiWeb:\ | ||||
|   [Double Entry Bookkeeping](http://c2.com/cgi/wiki?DoubleEntryBookkeeping) - software developers discuss it | ||||
| 
 | ||||
| Similar software:\ | ||||
|   [ledger](http://ledger-cli.org), | ||||
|  [UMM](http://hackage.haskell.org/package/UMM), | ||||
|  [penny](http://hackage.haskell.org/package/penny), | ||||
|  [beancount](http://furius.ca/beancount/), | ||||
|  and [more](https://github.com/ledger/ledger/wiki/Ports) | ||||
							
								
								
									
										211
									
								
								doc/FAQ.md
									
									
									
									
									
								
							
							
						
						
									
										211
									
								
								doc/FAQ.md
									
									
									
									
									
								
							| @ -1,211 +0,0 @@ | ||||
| # Frequently asked questions | ||||
| 
 | ||||
| ## hledger and ledger | ||||
| 
 | ||||
| ### How does hledger relate to ledger ? | ||||
| 
 | ||||
| hledger was inspired by and is partly a clone of John Wiegley's [ledger](http://ledger-cli.org). | ||||
| 
 | ||||
| I was a happy ledger user and contributor for some time; I still use it | ||||
| occasionally. I wrote hledger because I wanted to develop financial tools | ||||
| in the Haskell programming language and ecosystem, whose advantages I | ||||
| believe are compelling. I have also tried to make hledger a little more | ||||
| simple, usable, installable, documented, appealing to collaborators, and | ||||
| to provide alternate user interfaces to make it more widely useful. | ||||
| 
 | ||||
| ledger has more advanced power-user features on the command-line | ||||
| (periodic and modifier transactions, budgets, capital gains tracking, | ||||
| value expressions, custom output formats, etc.) and it remains faster | ||||
| and more memory efficient (for now!)... | ||||
| 
 | ||||
| hledger builds faster and has an up-to-date manual and an optional web | ||||
| interface (which often works on ledger files too)... | ||||
| 
 | ||||
| The two projects collaborate freely.  We share the | ||||
| [#ledger](irc://irc.freenode.net/#ledger) IRC channel but have | ||||
| separate mail lists | ||||
| ([hledger list](http://groups.google.com/group/hledger/), | ||||
| [ledger-cli list](http://groups.google.com/group/ledger-cli/)).  I try | ||||
| to give back by providing infrastructure | ||||
| ([ledger-cli.org](http://ledger-cli.org)) and IRC support. | ||||
| hledger stays compatible with ledger wherever possible, so that you | ||||
| can often use both tools on the same data file. | ||||
| 
 | ||||
| Summary: hledger is a friendly, co-evolving, compatible rewrite of ledger | ||||
| in Haskell, lacking some of ledger's power features and raw performance, | ||||
| and focussing on robustness, usability, ease of development, and | ||||
| experimental add-ons such as the [web interface](MANUAL.html#web). | ||||
| 
 | ||||
| ### What are the feature differences ? | ||||
| 
 | ||||
| hledger mimics a subset of [ledger 3.x](http://ledger-cli.org), and adds some features of its own. | ||||
| 
 | ||||
| We currently support: | ||||
| 
 | ||||
| - ledger's journal format, mostly | ||||
| - csv format | ||||
| - timelog format | ||||
| - regular journal transactions | ||||
| - multiple commodities | ||||
| - fixed prices and price history | ||||
| - virtual postings | ||||
| - print, register & balance commands | ||||
| - filtering by many criteria, with different query syntax | ||||
| - display expressions containing just a simple date predicate | ||||
| - some basic output formatting | ||||
| 
 | ||||
| We do not support: | ||||
| 
 | ||||
| - automated transactions | ||||
| - value expressions | ||||
| - fluctuating prices | ||||
| - display formats other than `d>[DATE]` or similar | ||||
| - budget reports | ||||
| 
 | ||||
| And we add these commands: | ||||
| 
 | ||||
| - add | ||||
| - balancesheet | ||||
| - cashflow | ||||
| - chart | ||||
| - incomestatement | ||||
| - irr | ||||
| - interest | ||||
| - vty | ||||
| - web | ||||
| 
 | ||||
| ledger options and commands not supported include: | ||||
| 
 | ||||
|     Basic options: | ||||
|     -o, --output FILE      write output to FILE | ||||
|     -i, --init-file FILE   initialize ledger using FILE (default: ~/.ledgerrc) | ||||
|     -a, --account NAME     use NAME for the default account (useful with QIF) | ||||
|      | ||||
|     Report filtering: | ||||
|     -c, --current          show only current and past entries (not future) | ||||
|         --period-sort EXPR sort each report period's entries by EXPR | ||||
|     -L, --actual           consider only actual (non-automated) transactions | ||||
|         --budget           generate budget entries based on periodic entries | ||||
|         --add-budget       show all transactions plus the budget | ||||
|         --unbudgeted       show only unbudgeted transactions | ||||
|         --forecast EXPR    generate forecast entries while EXPR is true | ||||
|     -l, --limit EXPR       calculate only transactions matching EXPR | ||||
|     -t, --amount EXPR      use EXPR to calculate the displayed amount | ||||
|     -T, --total EXPR       use EXPR to calculate the displayed total | ||||
|      | ||||
|     Output customization: | ||||
|     -n, --collapse         Only show totals in the top-most accounts. | ||||
|     -P, --by-payee         show summarized totals by payee | ||||
|     -x, --comm-as-payee    set commodity name as the payee, for reporting | ||||
|         --dow              show a days-of-the-week report | ||||
|     -S, --sort EXPR        sort report according to the value expression EXPR | ||||
|         --head COUNT       show only the first COUNT entries (negative inverts) | ||||
|         --tail COUNT       show only the last COUNT entries (negative inverts) | ||||
|         --pager PAGER      send all output through the given PAGER program | ||||
|     -A, --average          report average transaction amount | ||||
|     -D, --deviation        report deviation from the average | ||||
|     -%, --percentage       report balance totals as a percentile of the parent | ||||
|         --totals           in the "xml" report, include running total | ||||
|     -j, --amount-data      print only raw amount data (useful for scripting) | ||||
|     -J, --total-data       print only raw total data | ||||
|     -y, --date-format STR  use STR as the date format (default: %Y/%m/%d) | ||||
|         --balance-format      --register-format       --print-format | ||||
|         --plot-amount-format  --plot-total-format     --equity-format | ||||
|         --prices-format       --wide-register-format | ||||
|      | ||||
|     Commodity reporting: | ||||
|         --price-db FILE    sets the price database to FILE (def: ~/.pricedb) | ||||
|     -L, --price-exp MINS   download quotes only if newer than MINS (def: 1440) | ||||
|     -Q, --download         download price information when needed | ||||
|     -O, --quantity         report commodity totals (this is the default) | ||||
|     -V, --market           report last known market value | ||||
|     -g, --performance      report gain/loss for each displayed transaction | ||||
|     -G, --gain             report net gain/loss | ||||
|      | ||||
|     Commands: | ||||
|     xml      [REGEXP]...   print matching entries in XML format | ||||
|     equity   [REGEXP]...   output equity entries for matching accounts | ||||
|     prices   [REGEXP]...   display price history for matching commodities | ||||
|     entry DATE PAYEE AMT   output a derived entry, based on the arguments | ||||
| 
 | ||||
| ### What are the file format differences ? | ||||
| 
 | ||||
| hledger's file format is mostly identical with ledger's, by design. | ||||
| Generally, it's easy to keep a journal file that works with both hledger | ||||
| and ledger if you avoid ledger's most advanced features. | ||||
| 
 | ||||
| Some ledger features are parsed but ignored, eg: | ||||
| 
 | ||||
| - automated transactions ( = ... , ~ ... ) | ||||
| - fixed lot prices ( {...} ) | ||||
| - historical prices ( P ... ) | ||||
| 
 | ||||
| Some features are not currently parsed and will cause an error, eg | ||||
| ledger's more recent top-level directives. There can also be subtle | ||||
| differences in parser behaviour. | ||||
| 
 | ||||
| ### What other functionality differences are there ? | ||||
| 
 | ||||
| - hledger recognises description and negative patterns by "desc:" | ||||
|   and "not:" prefixes, unlike ledger 3's free-form parser | ||||
| 
 | ||||
| - hledger doesn't require a space before command-line option | ||||
|   values, eg `-fFILE` or `-f FILE` works | ||||
| 
 | ||||
| - hledger's weekly reporting intervals always start on mondays | ||||
| 
 | ||||
| - hledger shows start and end dates of the intervals requested, | ||||
|   not just the span containing data | ||||
| 
 | ||||
| - hledger always shows timelog balances in hours | ||||
| 
 | ||||
| - hledger splits multi-day timelog sessions at midnight | ||||
| 
 | ||||
| - hledger doesn't track the value of commodities with varying | ||||
|   price; prices are fixed as of the transaction date | ||||
| 
 | ||||
| - hledger's output follows the decimal point character, digit grouping, | ||||
|   and digit group separator character used in the journal. | ||||
| 
 | ||||
| - hledger print shows amounts for all postings, and shows unit prices for | ||||
|   amounts which have them. (This means that it does not currently print | ||||
|   multi-commodity transactions in valid journal format.) | ||||
| 
 | ||||
| - hledger print ignores the --date2 flag, always showing both dates. | ||||
|   ledger print shows only the secondary date with --aux-date, but not | ||||
|   vice versa. | ||||
| 
 | ||||
| - hledger's default commodity directive (D) sets the commodity to be | ||||
|   used for subsequent commodityless amounts, and also sets that | ||||
|   commodity's display settings if such an amount is the first | ||||
|   seen. ledger uses D only for commodity display settings and for the | ||||
|   entry command. | ||||
| 
 | ||||
| - hledger generates a description for timelog sessions, instead of | ||||
|   taking it from the clock-out entry | ||||
| 
 | ||||
| - hledger's [include directive](MANUAL.html#including-other-files) does not support | ||||
|   shell glob patterns (eg `include *.journal` ), which ledger does. | ||||
| 
 | ||||
| - when checking [balance assertions](MANUAL.html#balance-assertions) | ||||
|   hledger sorts the account's postings first by date and then (for | ||||
|   postings with the same date) by parse order. ledger goes strictly by | ||||
|   parse order. | ||||
| 
 | ||||
| - ledger allows amounts to have a | ||||
|   [fixed lot price](MANUAL.html#prices) and a regular price in any | ||||
|   order (and uses whichever appears first). hledger requires the fixed | ||||
|   lot price to come last (and ignores it). | ||||
| 
 | ||||
| ### How are the implementations different ? | ||||
| 
 | ||||
| ledger is written in C++, whereas hledger is written in the | ||||
| [Haskell](http://haskell.org) programming language.  | ||||
| Haskell is a highly regarded up-and-coming language that enables | ||||
| a coding style known as pure functional programming, offering the | ||||
| promise of more bug-free and maintainable software built in fewer | ||||
| lines of code. Haskell also provides a more abstracted, portable | ||||
| platform which can make deployment and installation easier in some | ||||
| cases. Haskell also brings some new challenges such as managing memory | ||||
| growth and laziness. | ||||
| 
 | ||||
							
								
								
									
										211
									
								
								doc/INSTALL.md
									
									
									
									
									
								
							
							
						
						
									
										211
									
								
								doc/INSTALL.md
									
									
									
									
									
								
							| @ -1,211 +0,0 @@ | ||||
| # Installation Guide | ||||
| 
 | ||||
| hledger works on GNU/linux, mac and windows. | ||||
| Here are several ways to install it. | ||||
| 
 | ||||
| ## Install with your system package manager | ||||
| 
 | ||||
| If you have a system package manager that includes hledger, | ||||
| this will be the quickest and easiest way to install, | ||||
| if you don't need the very latest version. | ||||
| 
 | ||||
| Debian, Ubuntu:    `apt-get install hledger [hledger-web]` | ||||
| 
 | ||||
| Red Hat, Fedora:    `yum install hledger` | ||||
| 
 | ||||
| 
 | ||||
| ## Install binaries from hledger.org | ||||
| 
 | ||||
| [Ready-to-run binaries](DOWNLOAD.html) for GNU/Linux, Mac OSX, and Microsoft Windows can be downloaded from this site. | ||||
| They are out of date, but you can fund new ones with a donation of any size (see the page for more). | ||||
| This is probably the easiest way to install hledger on windows and mac. | ||||
| 
 | ||||
| The binaries do not currently include installers, so after downloading | ||||
| you may need to decompress, make executable, and/or rename the file. Eg: | ||||
| 
 | ||||
|     $ gunzip hledger-web-0.18.2-mac-x86_64.gz | ||||
|     $ chmod +x hledger-web-0.18.2-mac-x86_64 | ||||
|     $ mv hledger-web-0.18.2-mac-x86_64 /usr/local/bin/hledger-web | ||||
|     $ /usr/local/bin/hledger-web --version | ||||
| 
 | ||||
| ## Install from hackage with cabal | ||||
| 
 | ||||
| You can download and build the latest release yourself using cabal, the standard installer for Haskell software. | ||||
| This is the most common way to install hledger, but not always the easiest; | ||||
| use the troubleshooting tips below if needed. | ||||
| 
 | ||||
| Ensure you have [GHC](http://hackage.haskell.org/ghc/) or | ||||
| the [Haskell Platform](http://hackage.haskell.org/platform/) installed. | ||||
| hledger requires GHC 7.2 or greater, and hledger-web requires GHC 7.4 or greater. | ||||
| 
 | ||||
| Also note that some Haskell packages depend on C packages, and cabal | ||||
| currently isn't able to install or identify those for you. A common | ||||
| issue is not having all the ncurses C libraries installed. A quick way | ||||
| to ensure you have all required C libs is to | ||||
| [install hledger once with your system package manager](#install-with-your-system-package-manager) | ||||
| before installing the latest version with cabal. | ||||
| 
 | ||||
| Then install the hledger command-line tool: | ||||
| 
 | ||||
|     $ cabal update | ||||
|     $ cabal install hledger [--dry-run] | ||||
|     $ hledger --version | ||||
| 
 | ||||
| You should see the proper version reported. | ||||
| If you get "could not resolve dependencies", "hledger not found", | ||||
| or any other problem, see [troubleshooting](#troubleshooting). | ||||
| Also note, to use non-ascii characters like £ in your data, you might need to [configure a suitable locale](MANUAL.html#locale). | ||||
| 
 | ||||
| To also install the web interface (slightly harder), do: | ||||
| 
 | ||||
|     $ cabal install hledger-web [--dry-run] | ||||
|     $ hledger-web --version | ||||
| 
 | ||||
| This also installs hledger if not already installed, and the hledger-web command | ||||
| will also be available as hledger's `web` subcommand. | ||||
| 
 | ||||
| Other add-on packages are available on Hackage, although some of these are | ||||
| unmaintained or work only on certain platforms: | ||||
| 
 | ||||
| - [hledger-chart](http://hackage.haskell.org/package/hledger-chart) | ||||
| - [hledger-interest](http://hackage.haskell.org/package/hledger-interest) | ||||
| - [hledger-irr](http://hackage.haskell.org/package/hledger-irr) | ||||
| - [hledger-vty](http://hackage.haskell.org/package/hledger-vty) | ||||
| 
 | ||||
| ## Install the latest development version | ||||
| 
 | ||||
| To download and build the latest development version of hledger, ensure you have | ||||
| [git](http://git-scm.com) installed, then: | ||||
| 
 | ||||
|     $ git clone http://github.com/simonmichael/hledger.git | ||||
|     $ cd hledger | ||||
|     $ cabal update | ||||
|     $ cabal install ./hledger-lib ./hledger [./hledger-web] | ||||
| 
 | ||||
| The same [notes above](#install-from-hackage-with-cabal) about requirements and checking your installation apply. | ||||
| 
 | ||||
| ## Troubleshooting | ||||
| 
 | ||||
| There are a lot of ways things can go wrong. Here are | ||||
| some known issues and things to try. Please also seek | ||||
| [support](DEVELOPMENT.html#support) from the | ||||
| [IRC channel](irc://irc.freenode.net/#ledger), | ||||
| [mail list](http://hledger.org/list) or | ||||
| [bug tracker](http://hledger.org/bugs). | ||||
| 
 | ||||
| Starting from the top, consider whether each of these might apply to | ||||
| you. Tip: blindly reinstalling/upgrading everything in sight probably | ||||
| won't work, it's better to go in small steps and understand the problem, | ||||
| or get help. | ||||
| 
 | ||||
| #. **hledger not found ?** | ||||
|   If cabal install succeeded but you get a message like "hledger not found" when you run hledger, | ||||
|   you should add cabal's bin directory to your PATH environment variable. | ||||
|   Eg on unix-like systems, something like: | ||||
| 
 | ||||
|         $ echo 'export PATH=$PATH:~/cabal/bin' >> ~/.bash_profile | ||||
|         $ source ~/.bash_profile | ||||
| 
 | ||||
| #. **hledger --version shows unexpected version ?** | ||||
|   Perhaps you have multiple versions of hledger in your PATH. Eg you installed with the system package manager  | ||||
|   (to get C libs) and then with cabal (to get the latest version), but cabal's bin directory appears too late | ||||
|   in the PATH. Move it closer to the front. | ||||
| 
 | ||||
| #. **Did you cabal update ?** | ||||
|   If not, `cabal update` and try again. | ||||
| 
 | ||||
| #. **Do you have a new enough version of GHC ?** | ||||
|   Run `ghc --version`. hledger requires GHC 7.0 or greater | ||||
|   (and on [some platforms](#5551), 7.2.1+ can be helpful). | ||||
| 
 | ||||
| #. **Do you have a new enough version of cabal ?** | ||||
|   Avoid ancient versions, which are less capable and more confusing. | ||||
|   `cabal --version` should probably report at least 1.16 (and for sandboxed | ||||
|   installs, 1.18+). You may be able to upgrade it with: | ||||
| 
 | ||||
|         $ cabal update | ||||
|         $ cabal install cabal-install | ||||
| 
 | ||||
| #. **Are your installed GHC/cabal packages in good repair ?** | ||||
|   Run `ghc-pkg check`. If it reports problems, some of your packages have | ||||
|   become inconsistent, and you should fix these first. | ||||
|   [ghc-pkg-clean](https://gist.github.com/1185421) is an easy way. | ||||
| 
 | ||||
| #. **cabal says "rejecting: system-fileio-0.3.11, 0.3.10 (conflict: blah blah blah.."** | ||||
|   system-fileio does not yet allow text 1.x, making cabal sweat. | ||||
|   If your cabal is modern enough, adding `--max-backjumps=10000` should help. | ||||
|   ([more](https://groups.google.com/d/topic/hledger/FdWGTSAVzYU/discussion)). | ||||
| 
 | ||||
| #. **cabal can't satisfy the new dependencies due to old installed packages** | ||||
|   Cabal dependency failures become more likely as you install more | ||||
|   packages over time. If `cabal install hledger-web --dry` says it can't | ||||
|   satisfy dependencies, you have this problem. You can: | ||||
| 
 | ||||
|     a. try to understand which packages to remove (with `ghc-pkg unregister`) | ||||
|        or which constraints to add (with `--constraint 'PKG == ...'`) to help cabal | ||||
|        find a solution | ||||
| 
 | ||||
|     b. install into a fresh cabal sandbox, created with `cabal sandbox init`. | ||||
|        ([virthualenv](http://hackage.haskell.org/package/virthualenv) or | ||||
|        [cabal-dev](http://hackage.haskell.org/package/cabal-dev) also work). | ||||
| 
 | ||||
|     c. or (easiest) erase your installed packages with | ||||
|        [ghc-pkg-reset](https://gist.github.com/1185421) and try again. | ||||
| 
 | ||||
|     For more detail, see [How to cabal install](https://www.fpcomplete.com/user/simonmichael/how-to-cabal-install). | ||||
| 
 | ||||
| #. **Dependency or compilation error in one of the new packages ?** | ||||
|    If cabal starts downloading and building packages and then terminates | ||||
|    with an error, look at the output carefully and identify the problem | ||||
|    package(s).  If necessary, add `-v2` or `-v3` for more verbose | ||||
|    output. You can install the new packages one at a time to troubleshoot, | ||||
|    but remember cabal is smarter when installing all packages at once. | ||||
| 
 | ||||
|     Often the problem is that you need to install a particular C library | ||||
|    using your platform's package management system. Or the dependencies | ||||
|    specified on a package may need updating. Or there may be a compilation | ||||
|    error.  If you find an error in a hledger package, check the | ||||
|    [recent commits](http://github.com/simonmichael/hledger/commits) to | ||||
|    see if the [latest development version](#installing) might have a fix. | ||||
| 
 | ||||
| #. **ExitFailure 11** | ||||
|   See | ||||
|   [http://hackage.haskell.org/trac/hackage/ticket/777](http://hackage.haskell.org/trac/hackage/ticket/777). | ||||
|   This means that a build process has been killed, usually because it grew | ||||
|   too large.  This is common on memory-limited VPS's and with GHC 7.4.1. | ||||
|   Look for some memory-hogging processes you can kill, increase your RAM, | ||||
|   or limit GHC's heap size by doing `cabal install ... --ghc-options='+RTS | ||||
|   -M400m'` (400 megabytes works well on my 1G VPS, adjust up or down..) | ||||
| 
 | ||||
| #. **Can't load .so/.DLL for: ncursesw (/usr/lib/libncursesw.so: file too short)** | ||||
|   (or similar): cf [GHC bug #5551](http://hackage.haskell.org/trac/ghc/ticket/5551). | ||||
|   Upgrade GHC to 7.2.1, or try your luck with [this workaround](http://eclipsefp.github.com/faq.html). | ||||
| 
 | ||||
| #. **Undefined iconv symbols on OS X** | ||||
|    This kind of error: | ||||
| 
 | ||||
|         Linking dist/build/hledger/hledger ... | ||||
|         Undefined symbols: | ||||
|           "_iconv_close", referenced from: | ||||
|               _hs_iconv_close in libHSbase-4.2.0.2.a(iconv.o) | ||||
|           "_iconv", referenced from: | ||||
|               _hs_iconv in libHSbase-4.2.0.2.a(iconv.o) | ||||
|           "_iconv_open", referenced from: | ||||
|               _hs_iconv_open in libHSbase-4.2.0.2.a(iconv.o) | ||||
| 
 | ||||
|     probably means you are on a mac with macports libraries installed, cf | ||||
|     [http://hackage.haskell.org/trac/ghc/ticket/4068](http://hackage.haskell.org/trac/ghc/ticket/4068). | ||||
|     To work around temporarily, add this --extra-lib-dirs flag: | ||||
| 
 | ||||
|         $ cabal install hledger --extra-lib-dirs=/usr/lib | ||||
| 
 | ||||
|     or permanently, add this to ~/.cabal/config: | ||||
| 
 | ||||
|         extra-lib-dirs: /usr/lib | ||||
| 
 | ||||
| #. **hledger-vty requires curses-related libraries** | ||||
|   On Ubuntu, eg, you'll need the `libncurses5-dev` package. On Windows, | ||||
|   these are not available (unless perhaps via Cygwin.) | ||||
| 
 | ||||
| #. **hledger-chart requires GTK-related libraries** | ||||
|   On Ubuntu, eg, install the `libghc6-gtk-dev` package. See also [Gtk2Hs installation notes](http://code.haskell.org/gtk2hs/INSTALL). | ||||
| @ -4,10 +4,6 @@ | ||||
|   data: | ||||
|     home: true | ||||
| 
 | ||||
| - title    : Installing | ||||
|   url      : INSTALL.html | ||||
|   source   : INSTALL.md | ||||
|    | ||||
| # - title    : Downloads | ||||
| #   url      : DOWNLOAD.html | ||||
| #   source   : DOWNLOAD.md | ||||
| @ -16,13 +12,9 @@ | ||||
|   url      : NEWS.html | ||||
|   source   : NEWS.md | ||||
| 
 | ||||
| - title    : FAQ | ||||
|   url      : FAQ.html | ||||
|   source   : FAQ.md | ||||
| - User Manual: | ||||
| 
 | ||||
| - Manual: | ||||
| 
 | ||||
|   - title    : Latest | ||||
|   - title    : Latest Manual | ||||
|     url      : MANUAL.html | ||||
|     source   : MANUAL.md | ||||
|    | ||||
| @ -34,27 +26,29 @@ | ||||
|     url      : 0.21/MANUAL.html | ||||
|     source   : 0.21/MANUAL.md | ||||
| 
 | ||||
| - How-tos: | ||||
| - Wiki: | ||||
| 
 | ||||
|   - title    : Installing | ||||
|     url      : wiki/installing | ||||
|     template : null.st | ||||
| 
 | ||||
|   - title    : FAQ | ||||
|     url      : wiki/faq | ||||
|     template : null.st | ||||
| 
 | ||||
| #  - How-tos: | ||||
| 
 | ||||
|   - title    : How to read CSV files | ||||
|     url      : CSV.html | ||||
|     source   : CSV.md | ||||
|     url      : wiki/how_to_read_csv_files | ||||
|     template : null.st | ||||
| 
 | ||||
|   - title    : How to use account aliases | ||||
|     url      : ALIASES.html | ||||
|     source   : ALIASES.md | ||||
|     url      : wiki/how_to_use_account_aliases | ||||
|     template : null.st | ||||
| 
 | ||||
| - title    : More docs | ||||
|   url      : DOCS.html | ||||
|   source   : DOCS.md | ||||
| 
 | ||||
| - title    : Developer guide | ||||
|   url      : DEVELOP.html | ||||
|   source   : DEVELOP.md | ||||
| 
 | ||||
| - title    : Wiki | ||||
|   url      : wiki | ||||
|   template : null.st | ||||
|   - title    : Developer Guide | ||||
|     url      : wiki/developer_guide | ||||
|     template : null.st | ||||
| 
 | ||||
| - title    : hledger-web demo | ||||
|   url      : demo | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
| /*   list-style-type:none; */ | ||||
| /* } */ | ||||
| 
 | ||||
| /* div#nav { margin-top: 2em; } */ | ||||
| div#nav { padding-top: 2em; } | ||||
| /* div#nav ul { margin-top: 0; margin-left: 1em; margin-bottom: 0; } */ | ||||
| /* div#nav ul li { list-style: none; padding-bottom: 0.1em; } */ | ||||
| div#nav ul li.current { | ||||
| @ -10,11 +10,18 @@ div#nav ul li.current { | ||||
|   font-weight:bold; | ||||
| } | ||||
| 
 | ||||
| div#nav a:active { | ||||
|   position:relative; | ||||
|   top:1px; | ||||
| div#nav ul li.current { | ||||
|   /* list-style: square; */ | ||||
|   font-weight:bold; | ||||
| } | ||||
| 
 | ||||
| ul.nav ul { | ||||
|   padding-left:30px; | ||||
| } | ||||
| /* ul.nav ul li { */ | ||||
| /*   list-style:none; */ | ||||
| /* } */ | ||||
| 
 | ||||
| code { | ||||
|     color: #226600; | ||||
|     font-weight:bold; | ||||
|  | ||||
| @ -1,7 +1,9 @@ | ||||
| $(document).ready(function(){ | ||||
|   $("div#nav li > ul").hide(); | ||||
|   $("div#nav li > ul.active").show(); | ||||
|   /*$("div#nav li > ul").hide();*/ | ||||
|   /*$("div#nav li > ul.active").show();*/ | ||||
|   $("div#nav ul li a").click(function(event){ | ||||
|     $(event.target).parent().children("ul").slideToggle("fast"); | ||||
|     // $(event.target).parent().children("ul").slideToggle("fast");
 | ||||
| 	if ($(event.target).html() == "User Manual »") document.location = "/MANUAL.html"; | ||||
| 	else if ($(event.target).html() == "Wiki »") document.location = "/wiki"; | ||||
|   }); | ||||
| }); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user