bin: hledger-swap-dates: update for latest hledger-lib, finish (#1072)
[ci skip]
This commit is contained in:
parent
cfb32a89d6
commit
acd6e5bfe3
@ -6,8 +6,10 @@
|
||||
--package text
|
||||
-}
|
||||
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
{-# OPTIONS_GHC -Wno-missing-signatures -Wno-name-shadowing #-}
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
|
||||
import Data.List
|
||||
import Data.String.Here
|
||||
@ -18,7 +20,8 @@ import Hledger.Cli
|
||||
------------------------------------------------------------------------------
|
||||
cmdmode = hledgerCommandMode
|
||||
[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
|
||||
|]
|
||||
[]
|
||||
@ -29,14 +32,16 @@ FLAGS
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
opts <- getHledgerCliOpts cmdmode
|
||||
opts@CliOpts{reportopts_=ropts} <- getHledgerCliOpts cmdmode
|
||||
withJournalDo opts $
|
||||
\CliOpts{rawopts_=_rawopts,reportopts_=ropts} j -> do
|
||||
\j -> do
|
||||
d <- getCurrentDay
|
||||
let
|
||||
q = queryFromOpts d ropts
|
||||
ts = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j
|
||||
tags = nub $ sort $ map fst $ concatMap transactionAllTags ts
|
||||
mapM_ T.putStrLn tags
|
||||
-- replace txns with date-swapped txns
|
||||
-- print txns
|
||||
ts' = map transactionSwapDates ts
|
||||
mapM_ (putStrLn . showTransactionUnelided) ts'
|
||||
|
||||
transactionSwapDates :: Transaction -> Transaction
|
||||
transactionSwapDates t@Transaction{tdate2=Nothing} = t
|
||||
transactionSwapDates t@Transaction{tdate2=Just d} = t{tdate=d, tdate2=Just $ tdate t}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user