diff -r 430d210d54ae -r 86d7d5ab22a2 netserver/Opts.hs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netserver/Opts.hs Fri Oct 10 13:18:45 2008 +0000 @@ -0,0 +1,30 @@ +module Opts where + +import System +import System.Console.GetOpt +import Network +import Data.Maybe ( fromMaybe ) +import Miscutils + +data Flag = ListenPort PortNumber + deriving Show + +options :: [OptDescr Flag] +options = [ + Option ['p'] ["port"] (OptArg defaultPort "PORT") "listen on PORT" + ] + +defaultPort :: Maybe String -> Flag +defaultPort str = ListenPort $ fromInteger (fromMaybe 46631 (maybeRead (fromMaybe "46631" str) :: Maybe Integer)) + +opts :: IO [Flag] +opts = do + args <- getArgs + case getOpt Permute options args of + (o, [], []) -> return o + (_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) + where header = "Usage: newhwserv [OPTION...]" + +getPort :: [Flag] -> PortNumber +getPort [] = 46631 +getPort (ListenPort a:flags) = a