mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-08 07:09:28 +03:00
fix -f option
This commit is contained in:
parent
1322bcb4a0
commit
5475a3868c
41
Options.hs
41
Options.hs
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user