doc: style devguide, howtos
This commit is contained in:
		
							parent
							
								
									5e7fd191f2
								
							
						
					
					
						commit
						6d0343817c
					
				| @ -211,17 +211,21 @@ and the default view given by [bugs.hledger.org](http://bugs.hledger.org) exclud | |||||||
|    On some platforms the command will be eg `gmake` instead of `make`. |    On some platforms the command will be eg `gmake` instead of `make`. | ||||||
| 4. Get the hledger repo: | 4. Get the hledger repo: | ||||||
| 
 | 
 | ||||||
|         git clone https://github.com/simonmichael/hledger.git |     ```shell | ||||||
|  |     $ git clone https://github.com/simonmichael/hledger.git | ||||||
|  |     ``` | ||||||
| 
 | 
 | ||||||
| 5. You might want to install or upgrade some of these haskell developer tools. | 5. You might want to install or upgrade some of these haskell developer tools. | ||||||
|    If you're not sure, skip this step and return to it as needed. |    If you're not sure, skip this step and return to it as needed. | ||||||
|    Be sure the cabal bin directory where these are installed (eg ~/.cabal/bin) is in your PATH. |    Be sure the cabal bin directory where these are installed (eg ~/.cabal/bin) is in your PATH. | ||||||
| 
 | 
 | ||||||
|         cabal update |     ```{.shell .bold} | ||||||
|         cabal install alex happy       # if you get alex/happy-related errors when building hledger |     $ cabal update | ||||||
|         cabal install haddock          # needed to build hledger API docs |     $ cabal install alex happy       # if you get alex/happy-related errors when building hledger | ||||||
|         cabal install shelltestrunner  # needed to run hledger functional tests (may need latest git version) |     $ cabal install haddock          # needed to build hledger API docs | ||||||
|         cabal install hoogle hlint     # maybe useful for searching API docs and checking code |     $ cabal install shelltestrunner  # needed to run hledger functional tests (may need latest git version) | ||||||
|  |     $ cabal install hoogle hlint     # maybe useful for searching API docs and checking code | ||||||
|  |     ``` | ||||||
| 
 | 
 | ||||||
|     You'll also want a comfortable code editor, preferably with Haskell support. |     You'll also want a comfortable code editor, preferably with Haskell support. | ||||||
|     (I use emacs + [haskell-mode](https://github.com/haskell/haskell-mode), |     (I use emacs + [haskell-mode](https://github.com/haskell/haskell-mode), | ||||||
| @ -229,10 +233,12 @@ and the default view given by [bugs.hledger.org](http://bugs.hledger.org) exclud | |||||||
| 
 | 
 | ||||||
| 6. Install haskell libs required by hledger: | 6. Install haskell libs required by hledger: | ||||||
| 
 | 
 | ||||||
|         cabal update |     ```{.shell .bold} | ||||||
|         cd hledger |     $ cabal update | ||||||
|         cabal sandbox init   # optional |     $ cd hledger | ||||||
|         make installdeps     # or cabal install --only-dep ./hledger-lib ./hledger [./hledger-web] |     $ cabal sandbox init   # optional | ||||||
|  |     $ make installdeps     # or cabal install --only-dep ./hledger-lib ./hledger [./hledger-web] | ||||||
|  |     ``` | ||||||
| 
 | 
 | ||||||
|     This will install the required dependencies from Hackage. |     This will install the required dependencies from Hackage. | ||||||
|     If you're new to cabal, you can expect problems at this stage. |     If you're new to cabal, you can expect problems at this stage. | ||||||
| @ -242,13 +248,17 @@ and the default view given by [bugs.hledger.org](http://bugs.hledger.org) exclud | |||||||
| 
 | 
 | ||||||
| 7. Build with cabal: | 7. Build with cabal: | ||||||
| 
 | 
 | ||||||
|         make cabalbuild |     ```shell | ||||||
|  |     $ make cabalbuild | ||||||
|  |     ``` | ||||||
| 
 | 
 | ||||||
|     (Tip: `make cabalCMD` runs `cabal CMD` in each of the hledger packages). |     (Tip: `make cabalCMD` runs `cabal CMD` in each of the hledger packages). | ||||||
| 
 | 
 | ||||||
| 8. Build with GHC: | 8. Build with GHC: | ||||||
| 
 | 
 | ||||||
|         make bin/hledgerdev |     ```shell | ||||||
|  |     $ make bin/hledgerdev | ||||||
|  |     ``` | ||||||
| 
 | 
 | ||||||
|     This builds hledger (and hledger-lib) with GHC directly, without using cabal, |     This builds hledger (and hledger-lib) with GHC directly, without using cabal, | ||||||
|     and as quickly as possible, without optimizations (the "dev" suffix is a reminder of this). |     and as quickly as possible, without optimizations (the "dev" suffix is a reminder of this). | ||||||
|  | |||||||
| @ -29,7 +29,12 @@ pre { | |||||||
| 		border:thin solid #eec; | 		border:thin solid #eec; | ||||||
| 		/* border:none; */ | 		/* border:none; */ | ||||||
| } | } | ||||||
| .csv, .rules { | .csv { | ||||||
|  | 		background-color:#cce; | ||||||
|  | 		border:thin solid #aad; | ||||||
|  | 		/* border:none; */ | ||||||
|  | } | ||||||
|  | .rules { | ||||||
| 		background-color:#eef; | 		background-color:#eef; | ||||||
| 		border:thin solid #cce; | 		border:thin solid #cce; | ||||||
| 		/* border:none; */ | 		/* border:none; */ | ||||||
|  | |||||||
| @ -3,13 +3,14 @@ | |||||||
| Here's a quick example of [converting a CSV file](manual.html#csv). | Here's a quick example of [converting a CSV file](manual.html#csv). | ||||||
| 
 | 
 | ||||||
| Say we have downloaded `checking.csv` from a bank for the first time: | Say we have downloaded `checking.csv` from a bank for the first time: | ||||||
| 
 | ```csv | ||||||
| "Date","Note","Amount" | "Date","Note","Amount" | ||||||
| "2012/3/22","DEPOSIT","50.00" | "2012/3/22","DEPOSIT","50.00" | ||||||
| "2012/3/23","TRANSFER TO SAVINGS","-10.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 [CSV rules syntax](manual.html#csv). Eg: | We tell hledger how to intepret this with a file named `checking.csv.rules`, using the [CSV rules syntax](manual.html#csv). Eg: | ||||||
| 
 | ```rules | ||||||
| # skip the first CSV line (headings) | # skip the first CSV line (headings) | ||||||
| skip 1 | skip 1 | ||||||
| 
 | 
 | ||||||
| @ -26,9 +27,11 @@ We tell hledger how to intepret this with a file named `checking.csv.rules`, usi | |||||||
| # (if not set, it will be expenses:unknown or income:unknown) | # (if not set, it will be expenses:unknown or income:unknown) | ||||||
| if ~ SAVINGS | if ~ SAVINGS | ||||||
|   account2 assets:bank:savings |   account2 assets:bank:savings | ||||||
|  | ``` | ||||||
| 
 | 
 | ||||||
| Now hledger can read this CSV file as journal data: | Now hledger can read this CSV file as journal data: | ||||||
| 
 | 
 | ||||||
|  | ```shell | ||||||
| $ hledger -f checking.csv print | $ hledger -f checking.csv print | ||||||
| using conversion rules file checking.csv.rules | using conversion rules file checking.csv.rules | ||||||
| 2012/03/22 DEPOSIT | 2012/03/22 DEPOSIT | ||||||
| @ -38,10 +41,11 @@ Now hledger can read this CSV file as journal data: | |||||||
| 2012/03/23 TRANSFER TO SAVINGS | 2012/03/23 TRANSFER TO SAVINGS | ||||||
|     assets:bank:savings         $10.00 |     assets:bank:savings         $10.00 | ||||||
|     assets:bank:checking       $-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 might save this output as `checking.journal`, and/or merge it (manually) into the main journal file. | ||||||
| We could also run other commands: | We could also run other commands: | ||||||
| 
 | ```shell | ||||||
| $ hledger -f checking.csv balance | $ hledger -f checking.csv balance | ||||||
| using conversion rules file checking.csv.rules | using conversion rules file checking.csv.rules | ||||||
|               $50.00  assets:bank |               $50.00  assets:bank | ||||||
| @ -50,4 +54,4 @@ We could also run other commands: | |||||||
|              $-50.00  income:unknown |              $-50.00  income:unknown | ||||||
| -------------------- | -------------------- | ||||||
|                    0 |                    0 | ||||||
| 
 | ``` | ||||||
|  | |||||||
| @ -3,31 +3,34 @@ | |||||||
| Here's an example of using [account aliases](manual.html#account-aliases). | Here's an example of using [account aliases](manual.html#account-aliases). | ||||||
| 
 | 
 | ||||||
| Say a sole proprietor has a `personal.journal`: | Say a sole proprietor has a `personal.journal`: | ||||||
| 
 | ```journal | ||||||
| 2014/1/2 | 2014/1/2 | ||||||
|     expenses:food  $1 |     expenses:food  $1 | ||||||
|     assets:cash |     assets:cash | ||||||
|  | ``` | ||||||
| 
 | 
 | ||||||
| and a `business.journal`: | and a `business.journal`: | ||||||
| 
 | ```journal | ||||||
| 2014/1/1 | 2014/1/1 | ||||||
|     expenses:office supplies  $1 |     expenses:office supplies  $1 | ||||||
|     assets:business checking |     assets:business checking | ||||||
|  | ``` | ||||||
| 
 | 
 | ||||||
| So each entity (the business owner, and the business) has their own file with its own simple chart of accounts. | 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). | 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 | In `unified.journal`, we include both files, and rewrite the personal | ||||||
| account names to fit into the business chart of accounts, | account names to fit into the business chart of accounts, | ||||||
| 
 | ```journal | ||||||
|     alias ^expenses    = equity:draw:personal | alias expenses    = equity:draw:personal | ||||||
|     alias ^assets:cash = assets:personal cash | alias assets:cash = assets:personal cash | ||||||
| include personal.journal | include personal.journal | ||||||
| end aliases | end aliases | ||||||
| 
 | 
 | ||||||
| include business.journal | include business.journal | ||||||
|  | ``` | ||||||
| 
 | 
 | ||||||
| Now we can see the data from both files at once, and the personal account names have changed: | Now we can see the data from both files at once, and the personal account names have changed: | ||||||
| 
 | ```shell | ||||||
| $ hledger -f unified.journal print | $ hledger -f unified.journal print | ||||||
| 2014/01/01                                    # from business.journal - no aliases applied | 2014/01/01                                    # from business.journal - no aliases applied | ||||||
|     expenses:office supplies            $1 |     expenses:office supplies            $1 | ||||||
| @ -36,10 +39,11 @@ Now we can see the data from both files at once, and the personal account names | |||||||
| 2014/01/02                                    # from personal.journal | 2014/01/02                                    # from personal.journal | ||||||
|     equity:draw:personal:food            $1   # <- was expenses:food |     equity:draw:personal:food            $1   # <- was expenses:food | ||||||
|     assets:personal cash                $-1   # <- was assets:cash |     assets:personal cash                $-1   # <- was assets:cash | ||||||
|  | ``` | ||||||
| 
 | 
 | ||||||
| You can also specify aliases on the command line. This could be useful to | 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 | quickly rewrite account names when sharing a report with someone else, such as | ||||||
| your accountant: | your accountant: | ||||||
| 
 | ```shell | ||||||
| $ hledger --alias 'my earning=income:business' ... | $ hledger --alias 'my earning=income:business' ... | ||||||
| 
 | ``` | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user