accounts: make accounts a built-in command, listing posted account names
This commit is contained in:
		
							parent
							
								
									7d99ae5033
								
							
						
					
					
						commit
						f9c1d94b5f
					
				| @ -1,15 +0,0 @@ | ||||
| #!/usr/bin/env runhaskell | ||||
| -- Show all account names used in the default journal. | ||||
| 
 | ||||
| import Hledger.Cli | ||||
| 
 | ||||
| main = do | ||||
|   -- simple way to read ~/.hledger.journal or $LEDGER_FILE | ||||
|   -- j <- defaultJournal | ||||
| 
 | ||||
|   -- but we'd better handle -f as well: | ||||
|   opts <- getCliOpts $ mainmode [] | ||||
|   withJournalDo opts $ \_opts j -> do | ||||
| 
 | ||||
|   -- query the journal for all account names and print each one | ||||
|   mapM_ putStrLn $ journalAccountNames j | ||||
							
								
								
									
										44
									
								
								hledger/Hledger/Cli/Accounts.hs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								hledger/Hledger/Cli/Accounts.hs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| {-| | ||||
| 
 | ||||
| The @accounts@ command lists the full names of the (query-restricted) | ||||
| accounts posted to . This is similar to ledger accounts -E. | ||||
| 
 | ||||
| -} | ||||
| 
 | ||||
| module Hledger.Cli.Accounts ( | ||||
|   accountsmode | ||||
|  ,accounts | ||||
|  ,tests_Hledger_Cli_Accounts | ||||
| ) where | ||||
| 
 | ||||
| import Data.List | ||||
| import System.Console.CmdArgs.Explicit as C | ||||
| import Test.HUnit | ||||
| 
 | ||||
| import Hledger | ||||
| import Prelude hiding (putStrLn) | ||||
| import Hledger.Utils.UTF8IOCompat (putStrLn) | ||||
| import Hledger.Cli.Options | ||||
| 
 | ||||
| 
 | ||||
| -- | Command line options for this command. | ||||
| accountsmode = (defCommandMode $ ["accounts"] ++ aliases ++ hiddenaliases) { | ||||
|   modeHelp = "show names of accounts posted to" `withAliases` aliases | ||||
|  ,modeGroupFlags = C.Group { | ||||
|      groupUnnamed = [ | ||||
|       flagReq  ["drop"] (\s opts -> Right $ setopt "drop" s opts) "N" "with --flat, omit this many leading account name components" | ||||
|      ] | ||||
|     ,groupHidden = [] | ||||
|     ,groupNamed = [generalflagsgroup1] | ||||
|     } | ||||
|  } | ||||
|   where (aliases, hiddenaliases) = (["a"],["acc"]) | ||||
| 
 | ||||
| -- | The accounts command. | ||||
| accounts :: CliOpts -> Journal -> IO () | ||||
| accounts CliOpts{reportopts_=ropts} j = do | ||||
|   d <- getCurrentDay | ||||
|   let q = queryFromOpts d ropts | ||||
|   mapM_ putStrLn $ filter (q `matchesAccount`) $ nub $ sort $ map paccount $ journalPostings j | ||||
| 
 | ||||
| tests_Hledger_Cli_Accounts = TestList [] | ||||
| @ -50,6 +50,7 @@ import Text.Printf | ||||
| 
 | ||||
| import Hledger (ensureJournalFileExists) | ||||
| import Hledger.Cli.Add | ||||
| import Hledger.Cli.Accounts | ||||
| import Hledger.Cli.Balance | ||||
| import Hledger.Cli.Balancesheet | ||||
| import Hledger.Cli.Cashflow | ||||
| @ -82,6 +83,7 @@ mainmode addons = defMode { | ||||
|        ]) | ||||
|      ,("\nReporting commands", [ | ||||
|         printmode | ||||
|        ,accountsmode | ||||
|        ,balancemode | ||||
|        ,registermode | ||||
|        ,incomestatementmode | ||||
| @ -239,6 +241,7 @@ main = do | ||||
|       -- internal commands | ||||
|       | cmd == "activity"        = withJournalDo opts histogram       `orShowHelp` activitymode | ||||
|       | cmd == "add"             = (journalFilePathFromOpts opts >>= ensureJournalFileExists >> withJournalDo opts add) `orShowHelp` addmode | ||||
|       | cmd == "accounts"        = withJournalDo opts accounts        `orShowHelp` accountsmode | ||||
|       | cmd == "balance"         = withJournalDo opts balance         `orShowHelp` balancemode | ||||
|       | cmd == "balancesheet"    = withJournalDo opts balancesheet    `orShowHelp` balancesheetmode | ||||
|       | cmd == "cashflow"        = withJournalDo opts cashflow        `orShowHelp` cashflowmode | ||||
|  | ||||
| @ -53,6 +53,7 @@ library | ||||
|                   Hledger.Cli.Utils | ||||
|                   Hledger.Cli.Version | ||||
|                   Hledger.Cli.Add | ||||
|                   Hledger.Cli.Accounts | ||||
|                   Hledger.Cli.Balance | ||||
|                   Hledger.Cli.Balancesheet | ||||
|                   Hledger.Cli.Cashflow | ||||
| @ -108,6 +109,7 @@ executable hledger | ||||
|                   Hledger.Cli.Utils | ||||
|                   Hledger.Cli.Version | ||||
|                   Hledger.Cli.Add | ||||
|                   Hledger.Cli.Accounts | ||||
|                   Hledger.Cli.Balance | ||||
|                   Hledger.Cli.Balancesheet | ||||
|                   Hledger.Cli.Cashflow | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user