bin: hledger-swap-dates: update for latest hledger-lib, finish (#1072)

[ci skip]
This commit is contained in:
Simon Michael 2019-07-16 23:31:18 +01:00
parent cfb32a89d6
commit acd6e5bfe3

View File

@ -6,8 +6,10 @@
--package text --package text
-} -}
{-# LANGUAGE QuasiQuotes #-}
{-# OPTIONS_GHC -Wno-missing-signatures -Wno-name-shadowing #-} {-# OPTIONS_GHC -Wno-missing-signatures -Wno-name-shadowing #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RecordWildCards #-}
import Data.List import Data.List
import Data.String.Here import Data.String.Here
@ -18,7 +20,8 @@ import Hledger.Cli
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
cmdmode = hledgerCommandMode cmdmode = hledgerCommandMode
[here| swap-dates [here| swap-dates
Swap date and date2, on transactions and postings which have date2 defined. Swap date and date2, on transactions which have date2 defined.
(Does not yet swap posting dates.)
FLAGS FLAGS
|] |]
[] []
@ -29,14 +32,16 @@ FLAGS
main :: IO () main :: IO ()
main = do main = do
opts <- getHledgerCliOpts cmdmode opts@CliOpts{reportopts_=ropts} <- getHledgerCliOpts cmdmode
withJournalDo opts $ withJournalDo opts $
\CliOpts{rawopts_=_rawopts,reportopts_=ropts} j -> do \j -> do
d <- getCurrentDay d <- getCurrentDay
let let
q = queryFromOpts d ropts q = queryFromOpts d ropts
ts = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j ts = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j
tags = nub $ sort $ map fst $ concatMap transactionAllTags ts ts' = map transactionSwapDates ts
mapM_ T.putStrLn tags mapM_ (putStrLn . showTransactionUnelided) ts'
-- replace txns with date-swapped txns
-- print txns transactionSwapDates :: Transaction -> Transaction
transactionSwapDates t@Transaction{tdate2=Nothing} = t
transactionSwapDates t@Transaction{tdate2=Just d} = t{tdate=d, tdate2=Just $ tdate t}