{-|
A convenient module to import in hledger scripts, 
aiming to provide the most useful imports and reduce boilerplate.
|-}

{-# LANGUAGE CPP #-}
{-# LANGUAGE PackageImports #-}

module Hledger.Cli.Script 
( module M
) 
where

import Control.Applicative as M
import Control.Concurrent as M
import Control.Monad as M
import Data.Char as M
import Data.Either as M

import Data.Functor as M
#if MIN_VERSION_base(4,19,0)
  hiding (unzip)
#endif
-- import Data.Functor as M (Functor, fmap, (<$), ($>), (<$>), (<&>))  -- or without CPP ? redundant import warning

import Data.List as M
import Data.Maybe as M
import Data.Ord as M
-- import Data.String.QQ (s)  -- https://github.com/audreyt/string-qq/pull/3
import Data.Time as M
import Text.Printf as M hiding (formatString)
import "text" Data.Text as M (Text, pack, unpack)
  -- can't re-export much of Data.Text & Data.Text.IO, they need to be qualified
import Safe as M hiding (at)
-- import qualified System.Console.CmdArgs.Explicit as M
import System.Directory as M
import System.Environment as M
import System.Exit as M
import System.FilePath as M
import System.IO as M
import System.IO.Error as M
import System.Process as M

-- import Hledger.Cli as M hiding (main)
import Hledger.Cli as M (argsToCliOpts)
import Hledger.Cli.CliOptions as M
import Hledger.Cli.Commands as M
import Hledger.Cli.DocFiles as M
import Hledger.Cli.Utils as M
import Hledger.Cli.Version as M
import Hledger.Cli.CompoundBalanceCommand as M

import Hledger as M
import System.Console.CmdArgs.Explicit as M

-- import Hledger.Cli as M (argsToCliOpts)