43 lines
1.1 KiB
Haskell
Executable File
43 lines
1.1 KiB
Haskell
Executable File
#!/usr/bin/env stack
|
|
{- stack runghc --verbosity info
|
|
--package hledger-lib
|
|
--package hledger
|
|
--package here
|
|
--package text
|
|
-}
|
|
|
|
{-# LANGUAGE QuasiQuotes #-}
|
|
{-# OPTIONS_GHC -Wno-missing-signatures -Wno-name-shadowing #-}
|
|
|
|
import Data.List
|
|
import Data.String.Here
|
|
import qualified Data.Text.IO as T
|
|
import Hledger
|
|
import Hledger.Cli
|
|
|
|
------------------------------------------------------------------------------
|
|
cmdmode = hledgerCommandMode
|
|
[here| swap-dates
|
|
Swap date and date2, on transactions and postings which have date2 defined.
|
|
FLAGS
|
|
|]
|
|
[]
|
|
[generalflagsgroup1]
|
|
[]
|
|
([], Nothing) -- Just $ argsFlag "[QUERY]")
|
|
------------------------------------------------------------------------------
|
|
|
|
main :: IO ()
|
|
main = do
|
|
opts <- getHledgerCliOpts cmdmode
|
|
withJournalDo opts $
|
|
\CliOpts{rawopts_=_rawopts,reportopts_=ropts} 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
|