added some samples
[ekitaihs.git] / Parse.hs
1 module Parse ( ekitaiOpts ) where
2
3 import System.Console.GetOpt
4 import System.Environment
5 import Data.Maybe
6 import Data.Either
7
8 data Options = Options
9     { optHelp       :: Bool
10     , optColor      :: Bool
11     }
12
13 defaultOptions = Options
14     { optHelp       = False
15     , optColor      = False
16     }
17
18 options :: [OptDescr (Options -> Options)]
19 options =
20     [ Option ['h'] ["help"]
21         (NoArg (\ opts -> opts { optHelp = True }))
22         "display's this message"
23     , Option ['c'] ["color", "colour"]
24         (NoArg (\ opts -> opts { optColor = True }))
25         "enables color"
26     ]
27
28 ekitaiOpts :: [String] -> IO (Options, String)
29 ekitaiOpts argv =
30     case getOpt RequireOrder options argv of
31         (o, [n], []) -> return (foldl (flip id) defaultOptions o, n)
32         (o, _, [])   -> ioError $ userError $ "must supply input file"
33         (_, _, errs)  -> ioError $ userError $ (concat errs)
34