module Main (main) where import Server import Control.Applicative ((<|>)) import qualified Data.Map as M import System.Environment (getArgs) main :: IO () main = do args <- getArgs >>= flip buildArgs M.empty port <- determinePort args putStrLn $ "Try: http://localhost:" ++ show port ++ "/auth?scope=ID%20Profile&client_id=42&response_type=code&redirect_uri=localhost" runMockServer port where buildArgs :: [String] -> M.Map String String -> IO (M.Map String String) buildArgs [] m = return m buildArgs (k:v:xs) m = return (M.insert k v m) >>= buildArgs xs buildArgs _ _ = error "invalid command line args" determinePort :: M.Map String String -> IO Int determinePort args = do case M.lookup "-p" args <|> M.lookup "--port" args of Just port -> return $ read port Nothing -> return 9443