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...]"