fix -f option

This commit is contained in:
Simon Michael 2007-02-16 12:24:13 +00:00
parent 1322bcb4a0
commit 5475a3868c
2 changed files with 22 additions and 23 deletions

View File

@ -8,36 +8,35 @@ import Data.Maybe (fromMaybe)
import Utils
data Flag = Version | File String | ShowSubs
deriving (Show,Eq)
options :: [OptDescr Flag]
options = [
Option ['v'] ["version"] (NoArg Version) "show version number"
, Option ['f'] ["file"] (OptArg inp "FILE") "ledger file, or - to read stdin"
, Option ['s'] ["subtotal"] (NoArg ShowSubs) "balance: show sub-accounts" --; register: show subtotals"
]
usageHeader = "Usage: hledger [OPTIONS] register|balance [MATCHARGS]"
inp :: Maybe String -> Flag
inp = File . fromMaybe "stdin"
getOptions :: [String] -> IO ([Flag], [String])
getOptions argv =
case getOpt RequireOrder options argv of
(o,n,[] ) -> return (o,n)
(_,_,errs) -> ioError (userError (concat errs ++ usageInfo usageHeader options))
usageHeader = "Usage: hledger [OPTIONS] register|balance [MATCHARGS]"
options :: [OptDescr Flag]
options = [
Option ['v'] ["version"] (NoArg Version) "show version number"
, Option ['f'] ["file"] (OptArg readFileOpt "FILE") "ledger file, or - to read stdin"
, Option ['s'] ["subtotal"] (NoArg ShowSubs) "balance: show sub-accounts" --; register: show subtotals"
]
get_content :: Flag -> Maybe String
get_content (File s) = Just s
data Flag = Version | File String | ShowSubs deriving (Show,Eq)
readFileOpt :: Maybe String -> Flag
readFileOpt = File . fromMaybe "stdin"
getFile :: Flag -> String
getFile (File s) = s
getFile _ = []
defaultLedgerFile = "~/ledger.dat"
getLedgerFilePath :: IO String
getLedgerFilePath = do
defaultpath <- tildeExpand defaultLedgerFile
getEnv "LEDGER" `catch` \_ -> return defaultpath >>= return
getLedgerFilePath :: [Flag] -> IO String
getLedgerFilePath opts = do
defaultpath <- tildeExpand "~/ledger.dat"
envordefault <- getEnv "LEDGER" `catch` \_ -> return defaultpath
return $ last $ [envordefault] ++ (filter (/= "") (map getFile opts))
-- ledger pattern args are a list of account patterns optionally followed
-- by -- and a list of description patterns

View File

@ -42,11 +42,11 @@ test = do
register :: [Flag] -> [String] -> IO ()
register opts args = do
getLedgerFilePath >>= parseLedgerFile >>= doWithParsed (printRegister opts args)
getLedgerFilePath opts >>= parseLedgerFile >>= doWithParsed (printRegister opts args)
balance :: [Flag] -> [String] -> IO ()
balance opts args = do
getLedgerFilePath >>= parseLedgerFile >>= doWithParsed (printBalance opts args)
getLedgerFilePath opts >>= parseLedgerFile >>= doWithParsed (printBalance opts args)
-- utils