start a scripts directory for user scripting examples
This commit is contained in:
		
							parent
							
								
									b344f797d3
								
							
						
					
					
						commit
						218e1c2f39
					
				
							
								
								
									
										1
									
								
								scripts/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								scripts/README
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | Scripting examples for hledger users - shell aliases, make rules, hledger-lib scripts.. | ||||||
							
								
								
									
										8
									
								
								scripts/accountnames.hs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								scripts/accountnames.hs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | #!/usr/bin/env runhaskell | ||||||
|  | -- list the default journal's chart of accounts in --flat style | ||||||
|  | import Hledger.Read | ||||||
|  | import Hledger.Data | ||||||
|  | main = do | ||||||
|  |   j <- myJournal | ||||||
|  |   let l = journalToLedger nullfilterspec{empty=True} j | ||||||
|  |   mapM_ putStrLn (accountnames l) | ||||||
							
								
								
									
										140
									
								
								scripts/aliases.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								scripts/aliases.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,140 @@ | |||||||
|  | # some hledger-related bash aliases | ||||||
|  | 
 | ||||||
|  | # time | ||||||
|  | 
 | ||||||
|  | # all in one big journal: | ||||||
|  | #export TIMELOG=~/personal/time.journal | ||||||
|  | 
 | ||||||
|  | alias hours="hledger -f $TIMELOG" | ||||||
|  | alias today='hours -p today' | ||||||
|  | alias yesterday='hours -p yesterday' | ||||||
|  | alias thisweek='hours -p thisweek' | ||||||
|  | alias lastweek='hours -p lastweek' | ||||||
|  | alias thismonth='hours -p thismonth' | ||||||
|  | alias lastmonth='hours -p lastmonth' | ||||||
|  | alias thisyear='hours -p thisyear' | ||||||
|  | alias lastyear='hours -p lastyear' | ||||||
|  | alias janhours="hours -p jan" | ||||||
|  | alias febhours="hours -p feb" | ||||||
|  | alias marhours="hours -p mar" | ||||||
|  | alias aprhours="hours -p apr" | ||||||
|  | alias mayhours="hours -p may" | ||||||
|  | alias junhours="hours -p jun" | ||||||
|  | alias julhours="hours -p jul" | ||||||
|  | alias aughours="hours -p aug" | ||||||
|  | alias sephours="hours -p sep" | ||||||
|  | alias octhours="hours -p oct" | ||||||
|  | alias novhours="hours -p nov" | ||||||
|  | alias dechours="hours -p dec" | ||||||
|  | alias 2008hours="hours -p 2008" | ||||||
|  | alias 2009hours="hours -p 2009" | ||||||
|  | alias 2010hours="hours -p 2010" | ||||||
|  | alias 2011hours="hours -p 2011" | ||||||
|  | alias 2012hours="hours -p 2012" | ||||||
|  | alias 2013hours="hours -p 2013" | ||||||
|  | alias 2014hours="hours -p 2014" | ||||||
|  | alias 2015hours="hours -p 2015" | ||||||
|  | alias weeklyhours="hours -p 'weekly this year' register --empty" | ||||||
|  | alias monthlyhours="hours -p 'monthly this year' register --empty" | ||||||
|  | alias weeklybillablehours="weeklyhours jobs not:unbilled --depth 3" | ||||||
|  | alias monthlybillablehours="monthlyhours jobs not:unbilled --depth 3" | ||||||
|  | 
 | ||||||
|  | # money | ||||||
|  | 
 | ||||||
|  | # one journal per year, included by current and all journals: | ||||||
|  | #export LEDGER_FILE=~/personal/current.journal | ||||||
|  | #export LEDGER_FILE=~/personal/all.journal | ||||||
|  | 
 | ||||||
|  | alias jan="hledger -p jan" | ||||||
|  | alias feb="hledger -p feb" | ||||||
|  | alias mar="hledger -p mar" | ||||||
|  | alias apr="hledger -p apr" | ||||||
|  | alias may="hledger -p may" | ||||||
|  | alias jun="hledger -p jun" | ||||||
|  | alias jul="hledger -p jul" | ||||||
|  | alias aug="hledger -p aug" | ||||||
|  | alias sep="hledger -p sep" | ||||||
|  | alias oct="hledger -p oct" | ||||||
|  | alias nov="hledger -p nov" | ||||||
|  | alias dec="hledger -p dec" | ||||||
|  | alias 2006='hledger -f ~/personal/2006.journal' | ||||||
|  | alias 2007='hledger -f ~/personal/2007.journal' | ||||||
|  | alias 2008='hledger -f ~/personal/2008.journal' | ||||||
|  | alias 2009='hledger -f ~/personal/2009.journal' | ||||||
|  | alias 2010='hledger -f ~/personal/2010.journal' | ||||||
|  | alias 2011='hledger -f ~/personal/2011.journal' | ||||||
|  | alias 2012='hledger -f ~/personal/2012.journal' | ||||||
|  | alias 2013='hledger -f ~/personal/2013.journal' | ||||||
|  | alias 2014='hledger -f ~/personal/2014.journal' | ||||||
|  | alias 2015='hledger -f ~/personal/2015.journal' | ||||||
|  | alias all='hledger -f ~/personal/all.journal' | ||||||
|  | alias household='hledger -f ~/personal/household.journal' | ||||||
|  | alias add='hledger add' | ||||||
|  | 
 | ||||||
|  | alias bankbalances='hledger bal assets:bank liabilities:credit -E' | ||||||
|  | alias cashflow="hledger balance '^assets:(bank|cash)'" | ||||||
|  | alias incexp="hledger balance '(^income|^expenses|^equity:draw)'" | ||||||
|  | # show activity in these accounts this and last month | ||||||
|  | alias cash="hledger -d 'd>=[last month]' reg 'assets:cash' -B" | ||||||
|  | alias checking="hledger -d 'd>=[last month]' reg 'assets:bank:wells fargo:checking' -B" | ||||||
|  | # show daily cleared checking balance - for reconciling with online bank statement | ||||||
|  | alias checkingcleared="checking --cleared --period 'daily to tomorrow'" | ||||||
|  | # show checking balance from today forward | ||||||
|  | alias checkingfuture="checking -d 'd>=[yesterday]'" | ||||||
|  | 
 | ||||||
|  | # generate a chart and view it in emacs | ||||||
|  | function chart () { | ||||||
|  |   hledger chart $* && emacsclient -n hledger.png | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # old ledger 2.6 scripts | ||||||
|  | 
 | ||||||
|  | function BalanceSheet() { | ||||||
|  |     echo "Balance sheet as of `date`" | ||||||
|  |     echo "totals include sub-accounts" | ||||||
|  |     echo | ||||||
|  |     ledger -n --balance-format '%10T  %2_%-a\n' --display "l<=3" --basis --subtotal $* balance assets | ||||||
|  |     echo | ||||||
|  |     ledger -n --balance-format '%10T  %2_%-a\n' --display "l<=3" --basis --subtotal $* balance liabilities | ||||||
|  |     echo | ||||||
|  |     ledger -nE --balance-format '%10T  %2_%-a\n' --display "l<=4" --basis --subtotal $* balance equity | ||||||
|  |     echo | ||||||
|  |     echo "`ledger --balance-format '%10T  %2_%-a\n' --basis $* balance liabilities equity | tail -1`liabilities + equity" | ||||||
|  |     echo | ||||||
|  |     ledger --balance-format '%10T  %2_%-a\n' --basis $* balance assets liabilities | tail -2 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function IncomeStatement() { | ||||||
|  |     echo "Income statement for `date +%Y` as of `date`" | ||||||
|  |     echo "totals include sub-accounts" | ||||||
|  |     echo | ||||||
|  |     ledger -n --balance-format '%10(-T)  %2_%-a\n' --display "l<=3" --basis --subtotal $* balance income | ||||||
|  |     echo | ||||||
|  |     ledger -n --balance-format '%10(-T)  %2_%-a\n' --display "l<=2" --basis --subtotal $* balance expenses -equity | ||||||
|  |     echo | ||||||
|  |     ledger --balance-format '%10(-T)  %2_%-a\n' --basis $* balance income expenses -equity | tail -2 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # function CashflowStatement () { | ||||||
|  | #     echo "Cashflow statement for `date +%Y`" | ||||||
|  | #     #echo "(totals include sub-accounts)" | ||||||
|  | #     echo | ||||||
|  | #     cat <<EOF | ||||||
|  | # cash flows from operating activities | ||||||
|  | #   net income as on income statement | ||||||
|  | #   add: depreciation | ||||||
|  | #   add: allowance for doubtful accounts | ||||||
|  | #   deduct: increase in inventory | ||||||
|  | #   deduct: increase in prepaid expenses | ||||||
|  | #   deduct: decrease in accounts payable | ||||||
|  | # cash flows from investing activities | ||||||
|  | #   cash received from investments sold | ||||||
|  | #   less: cash paid for store equipment | ||||||
|  | # cash flows from financing activities | ||||||
|  | #   cash paid for dividends | ||||||
|  | # | ||||||
|  | # Increase in cash:  | ||||||
|  | # Cash at the beginning of the year: | ||||||
|  | # Cash at the end of the year: | ||||||
|  | # EOF | ||||||
|  | # } | ||||||
							
								
								
									
										8
									
								
								scripts/all.journal
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								scripts/all.journal
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | ; all years | ||||||
|  | 
 | ||||||
|  | !include 2006.journal | ||||||
|  | !include 2007.journal | ||||||
|  | !include 2008.journal | ||||||
|  | !include 2009.journal | ||||||
|  | !include 2010.journal | ||||||
|  | !include 2011.journal | ||||||
							
								
								
									
										4
									
								
								scripts/current.journal
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								scripts/current.journal
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | ; current/recent years | ||||||
|  | 
 | ||||||
|  | ;!include 2010.journal | ||||||
|  | !include 2011.journal | ||||||
							
								
								
									
										38
									
								
								scripts/makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								scripts/makefile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | |||||||
|  | # some hledger-related make scripts
 | ||||||
|  | 
 | ||||||
|  | HLEDGER=hledger | ||||||
|  | 
 | ||||||
|  | YEAR:=$(shell date +%Y) | ||||||
|  | MONTH:=$(shell date +%m) | ||||||
|  | MONTHS:=$(shell ghc -e "(putStr . unwords . map show) [1..$(MONTH)]") | ||||||
|  | MONTHS2:=$(shell ghc -e "(putStr . unwords . map show) [2..$(MONTH)]") | ||||||
|  | 
 | ||||||
|  | ###############################################################################
 | ||||||
|  | 
 | ||||||
|  | # convert latest bank csv downloads to journal files
 | ||||||
|  | BANKJOURNALS = \
 | ||||||
|  | 	mint.journal \
 | ||||||
|  | 	WellsFargoChecking1.journal \
 | ||||||
|  | 	WellsFargoSavings2.journal \
 | ||||||
|  | 	WellsFargoSavings3.journal \
 | ||||||
|  | 	WellsFargoCreditCard4.journal \
 | ||||||
|  | 	Paypal.journal | ||||||
|  | convert-csv: move-csv $(BANKJOURNALS) | ||||||
|  | 
 | ||||||
|  | # move and rename any newly downloaded bank csv files
 | ||||||
|  | DOWNLOADDIR=~/Desktop | ||||||
|  | move-csv: | ||||||
|  | 	@(F=$(DOWNLOADDIR)/transactions.csv; [ -e $$F ] && (mv $$F mint.csv; echo new mint.csv found) || exit 0) | ||||||
|  | 	@(F=$(DOWNLOADDIR)/Checking1.csv; [ -e $$F ] && (mv $$F WellsFargoChecking1.csv; echo new WellsFargoChecking1.csv found) || exit 0) | ||||||
|  | 	@(F=$(DOWNLOADDIR)/Savings2.csv; [ -e $$F ] && (mv $$F WellsFargoSavings2.csv; echo new WellsFargoSavings2.csv found) || exit 0) | ||||||
|  | 	@(F=$(DOWNLOADDIR)/Savings3.csv; [ -e $$F ] && (mv $$F WellsFargoSavings3.csv; echo new WellsFargoSavings3.csv found) || exit 0) | ||||||
|  | 	@(F=$(DOWNLOADDIR)/CreditCard4.csv; [ -e $$F ] && (mv $$F WellsFargoCreditCard4.csv; echo new WellsFargoCreditCard4.csv found) || exit 0) | ||||||
|  | 	@(F=$(DOWNLOADDIR)/Download.csv; [ -e $$F ] && (mv $$F Paypal.csv; echo new Paypal.csv found) || exit 0) | ||||||
|  | 
 | ||||||
|  | # convert a csv to a journal using the similarly named rules file
 | ||||||
|  | %.journal: %.csv %.rules | ||||||
|  | 	$(HLEDGER) convert $< >$@ | ||||||
|  | 
 | ||||||
|  | %.rules: | ||||||
|  | 	touch '$@' | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user