Hach-0.1.1: client/Client/Args.hs
module Client.Args (parseArgs) where
import System.Console.GetOpt
data Flag = ServerIP String
| ClientNick String
options :: [OptDescr Flag]
options =
[ Option "s" ["server"] (ReqArg ServerIP "server_ip") "set server ip adress"
, Option "n" ["nick"] (ReqArg ClientNick "user nickname") "set user nickname"
]
parseArgs :: [String] -> IO (String, String)
parseArgs argv = case getOpt Permute options argv of
(os, _, []) -> do
let ips = [ s | ServerIP s <- os ]
let nicks = [ n | ClientNick n <- os ]
case (ips, nicks) of
([ip], [nick]) -> return (ip, nick)
(_, _) -> error $ usageInfo usage options
(_, _, es) -> error $ concat es ++ usageInfo usage options
where usage = "Usage: hach-client [OPTIONS...]"