mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-27 04:13:11 +03:00
hledger-balance-csv, hledger-print-csv: remove
This commit is contained in:
parent
b6774f47a3
commit
827aaad08e
@ -1,30 +0,0 @@
|
||||
#!/usr/bin/env runhaskell
|
||||
{-|
|
||||
hledger-balance-csv [OPTIONS] [ARGS]
|
||||
|
||||
Show a balance report as CSV.
|
||||
-}
|
||||
|
||||
import Hledger.Cli
|
||||
import Text.CSV
|
||||
|
||||
|
||||
argsmode =
|
||||
(defCommandMode ["balance-csv"]) {
|
||||
modeHelp = "show matched postings accounts and their balances as CSV"
|
||||
,modeGroupFlags = Group {
|
||||
groupNamed = []
|
||||
,groupUnnamed = inputflags ++ reportflags ++ helpflags
|
||||
,groupHidden = []
|
||||
}
|
||||
}
|
||||
|
||||
main = getCliOpts argsmode >>= printBalanceCsv
|
||||
|
||||
printBalanceCsv opts = withJournalDo opts $
|
||||
\CliOpts{reportopts_=ropts} j -> do
|
||||
d <- getCurrentDay
|
||||
let (items,_) = balanceReport ropts (queryFromOpts d ropts) j
|
||||
putStrLn $ printCSV $
|
||||
["account","balance"] :
|
||||
[[a, showMixedAmountWithoutPrice b] | ((a, _, _), b) <- items]
|
@ -1,74 +0,0 @@
|
||||
#!/usr/bin/env runhaskell
|
||||
{-|
|
||||
hledger-print-csv [-f JOURNALFILE]
|
||||
|
||||
Print matched journal entries as CSV
|
||||
Reads the default or specified journal.
|
||||
|-}
|
||||
|
||||
import Hledger.Cli
|
||||
import Text.CSV
|
||||
import Data.Char (isSpace)
|
||||
import Data.List (mapAccumL)
|
||||
|
||||
argsmode :: Mode RawOpts
|
||||
argsmode = (defCommandMode ["print-csv"])
|
||||
{ modeHelp = "print matched journal entries as CSV"
|
||||
, modeGroupFlags = Group
|
||||
{ groupNamed =
|
||||
[ ("Input",inputflags)
|
||||
, ("Reporting",reportflags)
|
||||
, ("Misc",helpflags)
|
||||
]
|
||||
, groupUnnamed = []
|
||||
, groupHidden = []
|
||||
}
|
||||
}
|
||||
|
||||
chomp :: String -> String
|
||||
chomp = reverse . dropWhile isSpace . reverse . dropWhile isSpace
|
||||
|
||||
postingToCSV :: Posting -> CSV
|
||||
postingToCSV p =
|
||||
map (\(a@(Amount {aquantity=q,acommodity=c})) ->
|
||||
let a_ = a{acommodity=""} in
|
||||
let amount = showAmount a_ in
|
||||
let commodity = c in
|
||||
let credit = if q < 0 then showAmount $ negate a_ else "" in
|
||||
let debit = if q > 0 then showAmount a_ else "" in
|
||||
account:amount:commodity:credit:debit:status:comment:[])
|
||||
amounts
|
||||
where
|
||||
Mixed amounts = pamount p
|
||||
status = if pstatus p then "*" else ""
|
||||
account = showAccountName Nothing (ptype p) (paccount p)
|
||||
comment = chomp $ pcomment p
|
||||
|
||||
postingsToCSV :: [Posting] -> CSV
|
||||
postingsToCSV ps =
|
||||
concatMap postingToCSV ps
|
||||
|
||||
transactionToCSV :: Integer -> Transaction -> CSV
|
||||
transactionToCSV n t =
|
||||
map (\p -> show n:date:date2:status:code:description:comment:p)
|
||||
(postingsToCSV (tpostings t))
|
||||
where
|
||||
description = tdescription t
|
||||
date = showDate (tdate t)
|
||||
date2 = maybe "" showDate (tdate2 t)
|
||||
status = if tstatus t then "*" else ""
|
||||
code = tcode t
|
||||
comment = chomp $ tcomment t
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
opts <- getCliOpts argsmode
|
||||
withJournalDo opts $
|
||||
\CliOpts{reportopts_=ropts} j -> do
|
||||
d <- getCurrentDay
|
||||
let ropts_ = ropts{flat_=True}
|
||||
let q = queryFromOpts d ropts_
|
||||
putStrLn $ printCSV $ concat $
|
||||
([["nth","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","status","posting-comment"]]:).snd $
|
||||
mapAccumL (\n e -> (n + 1, transactionToCSV n e)) 0 $
|
||||
entriesReport ropts_ q j
|
Loading…
Reference in New Issue
Block a user