hledger/Options.hs

35 lines
1.0 KiB
Haskell
Raw Normal View History

2007-01-30 12:07:12 +03:00
module Options where
import System.Console.GetOpt
import Data.Maybe ( fromMaybe )
2007-02-09 04:23:12 +03:00
import System.Environment (getEnv)
--import TildeExpand -- confuses my ghc 6.7
2007-01-30 12:07:12 +03:00
data Flag = File String | Version deriving Show
options :: [OptDescr Flag]
options = [
Option ['f'] ["file"] (OptArg inp "FILE") "ledger file, or - to read stdin"
, Option ['v'] ["version"] (NoArg Version) "show version number"
]
inp :: Maybe String -> Flag
inp = File . fromMaybe "stdin"
getOptions :: [String] -> IO ([Flag], [String])
getOptions argv =
case getOpt Permute options argv of
(o,n,[] ) -> return (o,n)
(_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options))
where header = "Usage: hledger [OPTIONS]"
get_content :: Flag -> Maybe String
get_content (File s) = Just s
2007-02-09 04:23:12 +03:00
--defaultLedgerFile = tildeExpand "~/ledger.dat"
defaultLedgerFile = "ledger.dat"
2007-02-09 06:17:12 +03:00
ledgerFilePath :: IO String
ledgerFilePath = do
2007-02-09 04:23:12 +03:00
getEnv "LEDGER" `catch` \_ -> return defaultLedgerFile >>= return