{-# LANGUAGE PatternGuards #-} module Main where import XMPP import qualified Echo import qualified Echo2 import System.Environment (getArgs) import System.IO import Control.Exception main = do args <- getArgs >>= parseArgs bracket (openConnection args) closeConnection mainLoop mainLoop c = do (sink, config) <- initConfig c runXMPP (act sink) config where act sink = do handleVersion "My Bot" "0.1" "HaskellOS" Echo.add Echo2.add kickOff sink parseArgs args | [us, pwd] <- args, (u@(_:_), ('@':s)) <- break (=='@') us = return (u, s, pwd) | [us] <- args, (u@(_:_), ('@':s)) <- break (=='@') us = do putStr $ "Password for "++us++": " hFlush stdout hSetEcho stdin False pwd <- getLine hSetEcho stdin True putChar '\n' return (u, s, pwd) | otherwise = error usage where usage = "Usage: Main user@server [password]"