From 9bf447184bc832158d8cdd3ac697c1d0b4243880 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Sun, 26 Jan 2014 11:41:28 -0800 Subject: [PATCH] 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. --- Makefile | 2 +- doc/ALIASES.md | 49 ------- doc/CSV.md | 52 ------- doc/DEVELOP.md | 291 --------------------------------------- doc/DOCS.md | 25 ---- doc/FAQ.md | 211 ---------------------------- doc/INSTALL.md | 211 ---------------------------- site/content.yaml | 46 +++---- site/files/css/style.css | 15 +- site/files/js/nav.js | 8 +- 10 files changed, 37 insertions(+), 873 deletions(-) delete mode 100644 doc/ALIASES.md delete mode 100644 doc/CSV.md delete mode 100644 doc/DEVELOP.md delete mode 100644 doc/DOCS.md delete mode 100644 doc/FAQ.md delete mode 100644 doc/INSTALL.md diff --git a/Makefile b/Makefile index e82951e4f..d98db9bf5 100644 --- a/Makefile +++ b/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/* diff --git a/doc/ALIASES.md b/doc/ALIASES.md deleted file mode 100644 index 895f5995c..000000000 --- a/doc/ALIASES.md +++ /dev/null @@ -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. - diff --git a/doc/CSV.md b/doc/CSV.md deleted file mode 100644 index 4f294b064..000000000 --- a/doc/CSV.md +++ /dev/null @@ -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 diff --git a/doc/DEVELOP.md b/doc/DEVELOP.md deleted file mode 100644 index 1056c2250..000000000 --- a/doc/DEVELOP.md +++ /dev/null @@ -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 development version**
-[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!) - -
-[build](http://hydra.cryp.to:8080/project/hledger), -[dependencies](http://packdeps.haskellers.com/feed/?needle=hledger) - - - - - -reports\ - - - -\ - - -## 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 - - -### 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). - - - - - - - - - - - - - - - -## 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. - - diff --git a/doc/DOCS.md b/doc/DOCS.md deleted file mode 100644 index bd373e73c..000000000 --- a/doc/DOCS.md +++ /dev/null @@ -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) diff --git a/doc/FAQ.md b/doc/FAQ.md deleted file mode 100644 index fe1905777..000000000 --- a/doc/FAQ.md +++ /dev/null @@ -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. - diff --git a/doc/INSTALL.md b/doc/INSTALL.md deleted file mode 100644 index 8e4fdd7a3..000000000 --- a/doc/INSTALL.md +++ /dev/null @@ -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). diff --git a/site/content.yaml b/site/content.yaml index 46ae92a59..8028db691 100644 --- a/site/content.yaml +++ b/site/content.yaml @@ -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 diff --git a/site/files/css/style.css b/site/files/css/style.css index e2c928481..32974f47d 100644 --- a/site/files/css/style.css +++ b/site/files/css/style.css @@ -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; diff --git a/site/files/js/nav.js b/site/files/js/nav.js index 28d27a477..e6d5a7890 100644 --- a/site/files/js/nav.js +++ b/site/files/js/nav.js @@ -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"; }); });