{-# LANGUAGE UnicodeSyntax #-} module NClient.Args (parseArgs) where import System.Console.GetOpt data Options = ServerIP String | Name String options ∷ [OptDescr Options] options = [ Option "s" ["server"] (ReqArg ServerIP "Server IP") "Set server IP address." , Option "n" ["nick"] (ReqArg Name "User nickname") "Set user nickname." ] parseArgs ∷ [String] → IO (String, String) parseArgs argv = case getOpt Permute options argv of (os, _, []) → let ips = [ s | ServerIP s ← os ] nicks = [ n | Name n ← os ] in case (ips, nicks) of ([ip], [nick]) → return (ip, nick) (_, _) → error $ usageInfo usage options (_, _, es) → error $ concat es ++ usageInfo usage options where usage = "Usage: hach-nclient [OPTIONS]"