packages feed

Hach-0.1.1: nclient/NClient/Args.hs

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