update example scripts in extra and rename them so they work as add-ons
This commit is contained in:
		
							parent
							
								
									61ff8b852a
								
							
						
					
					
						commit
						d1de9ba927
					
				| @ -1,7 +0,0 @@ | |||||||
| #!/usr/bin/env runhaskell |  | ||||||
| -- list the default journal's chart of accounts in --flat style |  | ||||||
| import Hledger |  | ||||||
| main = do |  | ||||||
|   j <- myJournal |  | ||||||
|   let l = journalToLedger nullfilterspec{empty=True} j |  | ||||||
|   mapM_ putStrLn (accountnames l) |  | ||||||
| @ -1,23 +0,0 @@ | |||||||
| #!/usr/bin/env runhaskell |  | ||||||
| {- |  | ||||||
| Print an entry posting the total balance of the specified account and |  | ||||||
| subaccounts, or all accounts, from the default journal. Like ledger's |  | ||||||
| equity command. Useful when starting a new journal or closing the books. |  | ||||||
| 
 |  | ||||||
| Usage: equity.hs [ACCTPAT] |  | ||||||
| -} |  | ||||||
| import Hledger |  | ||||||
| import Hledger.Cli |  | ||||||
| import System.Environment |  | ||||||
| 
 |  | ||||||
| main = do |  | ||||||
|   j <- myJournal |  | ||||||
|   d <- getCurrentDay |  | ||||||
|   args <- getArgs |  | ||||||
|   let acctpat = head $ args ++ [""] |  | ||||||
|       (acctbals,_) = balanceReport [Flat] (optsToFilterSpec [] [acctpat] d) j |  | ||||||
|       txn = nulltransaction{ |  | ||||||
|               tdate=d, |  | ||||||
|               tpostings=[nullposting{paccount=a,pamount=b} | (a,_,_,b) <- acctbals] |  | ||||||
|                          ++ [nullposting{paccount="equity:opening balances",pamount=missingamt}]} |  | ||||||
|   putStr $ show txn |  | ||||||
							
								
								
									
										9
									
								
								extra/hledger-accountnames.hs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								extra/hledger-accountnames.hs
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | #!/usr/bin/env runhaskell | ||||||
|  | -- Show all account names used in the default journal. | ||||||
|  | 
 | ||||||
|  | import Hledger | ||||||
|  | 
 | ||||||
|  | main = do | ||||||
|  |   j <- defaultJournal | ||||||
|  |   let l = ledgerFromJournal Any j | ||||||
|  |   mapM_ putStrLn $ ledgerAccountNames l | ||||||
							
								
								
									
										30
									
								
								extra/hledger-equity.hs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								extra/hledger-equity.hs
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | #!/usr/bin/env runhaskell | ||||||
|  | {- | ||||||
|  | 
 | ||||||
|  | Like ledger's equity command, print a journal entry posting the total | ||||||
|  | balance of all accounts (or the specified account and its subaccounts) | ||||||
|  | in the default journal. | ||||||
|  | 
 | ||||||
|  | An entry like this is useful in the transition to a new journal file, | ||||||
|  | to zero out asset/liability balances in the old file and initialise | ||||||
|  | them in the new one. This way you get correct balances when reporting | ||||||
|  | on either file, and when including both files at once. | ||||||
|  | 
 | ||||||
|  | Usage: hledger-equity [ACCTPAT] | ||||||
|  | -} | ||||||
|  | import Hledger | ||||||
|  | import Hledger.Cli | ||||||
|  | import System.Environment | ||||||
|  | 
 | ||||||
|  | main = do | ||||||
|  |   j <- defaultJournal | ||||||
|  |   d <- getCurrentDay | ||||||
|  |   args <- getArgs | ||||||
|  |   let query = Or $ map Acct args | ||||||
|  |       ropts = defreportopts{flat_=True} | ||||||
|  |       (acctbals,_) = accountsReport ropts query j | ||||||
|  |       balancingamt = negate $ sum $ map (\(_,_,_,b) -> b) acctbals | ||||||
|  |       ps = [posting{paccount=a, pamount=b} | (a,_,_,b) <- acctbals] | ||||||
|  |            ++ [posting{paccount="equity:opening balances", pamount=balancingamt}] | ||||||
|  |       txn = nulltransaction{tdate=d, tpostings=ps} | ||||||
|  |   putStr $ showTransactionUnelided txn | ||||||
							
								
								
									
										24
									
								
								extra/hledger-print-unique.hs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										24
									
								
								extra/hledger-print-unique.hs
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | #!/usr/bin/env runhaskell | ||||||
|  | {-| | ||||||
|  | hledger-print-unique [-f JOURNALFILE | -f-] | ||||||
|  | 
 | ||||||
|  | Print only journal entries which are unique by description (or | ||||||
|  | something else). Reads the default or specified journal, or stdin. | ||||||
|  | 
 | ||||||
|  | |-} | ||||||
|  | 
 | ||||||
|  | import Data.List | ||||||
|  | import Data.Ord | ||||||
|  | import Hledger | ||||||
|  | import Hledger.Cli | ||||||
|  | import Hledger.Cli.Print (print') | ||||||
|  | 
 | ||||||
|  | main = do | ||||||
|  |   opts <- getHledgerCliOpts [] | ||||||
|  |   withJournalDo opts $ | ||||||
|  |     \opts j@Journal{jtxns=ts} -> print' opts j{jtxns=uniquify ts} | ||||||
|  |     where  | ||||||
|  |       uniquify = nubBy (\t1 t2 -> thingToCompare t1 == thingToCompare t2) . sortBy (comparing thingToCompare) | ||||||
|  | 
 | ||||||
|  | thingToCompare = tdescription | ||||||
|  | -- thingToCompare = tdate | ||||||
| @ -1,21 +0,0 @@ | |||||||
| #!/usr/bin/env runhaskell |  | ||||||
| {-| |  | ||||||
| Uniquify journal entries based on some id in the description. Reads the |  | ||||||
| default or specified journal, or stdin. |  | ||||||
| 
 |  | ||||||
| Usage: uniquify.hs [-f JOURNALFILE | -f-] |  | ||||||
| |-} |  | ||||||
| 
 |  | ||||||
| import Data.List |  | ||||||
| import Hledger |  | ||||||
| import Hledger.Cli |  | ||||||
| 
 |  | ||||||
| main = do |  | ||||||
|   opts <- getHledgerOpts |  | ||||||
|   withJournalDo opts uniquifyAndPrint |  | ||||||
| 
 |  | ||||||
| uniquifyAndPrint :: CliOpts -> Journal -> IO () |  | ||||||
| uniquifyAndPrint opts j@Journal{jtxns=ts} = print' opts j{jtxns=uniquify ts} |  | ||||||
|     where |  | ||||||
|       uniquify = nubBy (\t1 t2 -> extractId (tdescription t1) == extractId (tdescription t2)) |  | ||||||
|       extractId desc = desc -- extract some part that's supposed to be unique |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user