kevin-0.7.1: 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