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 (ensureJournalFileExists)
|
||||||
import Hledger.Cli.Add
|
import Hledger.Cli.Add
|
||||||
|
import Hledger.Cli.Accounts
|
||||||
import Hledger.Cli.Balance
|
import Hledger.Cli.Balance
|
||||||
import Hledger.Cli.Balancesheet
|
import Hledger.Cli.Balancesheet
|
||||||
import Hledger.Cli.Cashflow
|
import Hledger.Cli.Cashflow
|
||||||
@ -82,6 +83,7 @@ mainmode addons = defMode {
|
|||||||
])
|
])
|
||||||
,("\nReporting commands", [
|
,("\nReporting commands", [
|
||||||
printmode
|
printmode
|
||||||
|
,accountsmode
|
||||||
,balancemode
|
,balancemode
|
||||||
,registermode
|
,registermode
|
||||||
,incomestatementmode
|
,incomestatementmode
|
||||||
@ -239,6 +241,7 @@ main = do
|
|||||||
-- internal commands
|
-- internal commands
|
||||||
| cmd == "activity" = withJournalDo opts histogram `orShowHelp` activitymode
|
| cmd == "activity" = withJournalDo opts histogram `orShowHelp` activitymode
|
||||||
| cmd == "add" = (journalFilePathFromOpts opts >>= ensureJournalFileExists >> withJournalDo opts add) `orShowHelp` addmode
|
| 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 == "balance" = withJournalDo opts balance `orShowHelp` balancemode
|
||||||
| cmd == "balancesheet" = withJournalDo opts balancesheet `orShowHelp` balancesheetmode
|
| cmd == "balancesheet" = withJournalDo opts balancesheet `orShowHelp` balancesheetmode
|
||||||
| cmd == "cashflow" = withJournalDo opts cashflow `orShowHelp` cashflowmode
|
| cmd == "cashflow" = withJournalDo opts cashflow `orShowHelp` cashflowmode
|
||||||
|
|||||||
@ -53,6 +53,7 @@ library
|
|||||||
Hledger.Cli.Utils
|
Hledger.Cli.Utils
|
||||||
Hledger.Cli.Version
|
Hledger.Cli.Version
|
||||||
Hledger.Cli.Add
|
Hledger.Cli.Add
|
||||||
|
Hledger.Cli.Accounts
|
||||||
Hledger.Cli.Balance
|
Hledger.Cli.Balance
|
||||||
Hledger.Cli.Balancesheet
|
Hledger.Cli.Balancesheet
|
||||||
Hledger.Cli.Cashflow
|
Hledger.Cli.Cashflow
|
||||||
@ -108,6 +109,7 @@ executable hledger
|
|||||||
Hledger.Cli.Utils
|
Hledger.Cli.Utils
|
||||||
Hledger.Cli.Version
|
Hledger.Cli.Version
|
||||||
Hledger.Cli.Add
|
Hledger.Cli.Add
|
||||||
|
Hledger.Cli.Accounts
|
||||||
Hledger.Cli.Balance
|
Hledger.Cli.Balance
|
||||||
Hledger.Cli.Balancesheet
|
Hledger.Cli.Balancesheet
|
||||||
Hledger.Cli.Cashflow
|
Hledger.Cli.Cashflow
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user