kevin-0.10.0: src/Main.hs
import Kevin
import Kevin.Version
import System.Console.GetOpt
import System.Environment
defaultPort :: Int
defaultPort = 6669
data Flag = Port Int | Version | Help deriving (Eq)
opts :: [OptDescr Flag]
opts = [ Option "p" ["port"] (ReqArg (Port . read) "number") $ "local port to run the server on (defaults to " ++ show defaultPort ++ ")"
, Option "h" ["help"] (NoArg Help) "print this message"
, Option "v" ["version"] (NoArg Version) "show kevin's version number" ]
header :: String
header = "Usage: kevin [options...]"
getPort :: [Flag] -> Int
getPort (Port x:_) = x
getPort (_:xs) = getPort xs
getPort [] = defaultPort
main :: IO ()
main = do args <- getArgs
case getOpt Permute opts args of (flags, _, []) -> case flags of f | Help `elem` f -> putStrLn $ usageInfo header opts
| Version `elem` f -> putStrLn $ "kevin version " ++ showVersion version
| otherwise -> kevinServer $ getPort flags
(_, _, msgs@(_:_)) -> putStrLn $ concat msgs ++ usageInfo header opts