packages feed

live-sequencer-0.0: http/enable/HTTPServer/Option.hs

module HTTPServer.Option where

import Option.Utility ( parseNumber )

import qualified System.Console.GetOpt as Opt
import System.Console.GetOpt (ArgDescr(..), )


data Option = Option {
        port :: Port
    }

newtype Port = Port { deconsPort :: Int }
    deriving (Eq, Show)

deflt :: Option
deflt =
    Option {
        port = Port 8080
    }


description :: [Opt.OptDescr (Option -> IO Option)]
description =
    Opt.Option [] ["http-port"]
        (flip ReqArg "HTTP-PORT" $ \str flags ->
            fmap (\p -> flags{port = Port $ fromInteger p}) $
            parseNumber "HTTP port" (\n -> 0<n && n<65536) "positive 16 bit" str)
        ("provide a web server under this port,\ndefault " ++
         (show $ deconsPort $ port deflt) ) :
    []