diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Main.hs | 36 | 
1 files changed, 25 insertions, 11 deletions
| diff --git a/src/Main.hs b/src/Main.hs index ee11e92..cc4fda2 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -1,8 +1,11 @@ +{-# LANGUAGE LambdaCase #-}  module Main where  import Control.Concurrent.MVar  import Data.Text (Text)  import qualified Data.Text as T +import System.Environment (getArgs) +import System.Exit (die)  import Ghci  import IRC @@ -18,8 +21,8 @@ runInGhci ghci message = do      Return "" -> return (ghci', [T.pack "<no output>"])      Return s -> return (ghci', [T.pack s]) -main :: IO () -main = do +mainIRC :: IO () +mainIRC = do    ghci0 <- makeGhci    ghcivar <- newMVar ghci0    connectIRC @@ -30,12 +33,23 @@ main = do        putMVar ghcivar ghci'        return msgs) -  -- let loop :: Ghci -> IO () -  --     loop ghci = do -  --       line <- getLine -  --       (ghci', moutput) <- runStmtClever ghci line -  --       case moutput of -  --         Just output -> putStrLn $ "output = <" ++ output ++ ">" -  --         Nothing -> putStrLn "oops" -  --       loop ghci' -  -- makeGhci >>= loop +mainGHCI :: IO () +mainGHCI = do +  let loop :: Ghci -> IO () +      loop ghci = do +        line <- getLine +        (ghci', moutput) <- runStmtClever ghci line +        case moutput of +          Return output -> putStrLn $ "output = <" ++ output ++ ">" +          Ignored -> putStrLn "<ignored>" +          Error err -> putStrLn err +        loop ghci' +  makeGhci >>= loop + +main :: IO () +main = do +  getArgs >>= \case +    ["-irc"] -> mainIRC +    ["-ghci"] -> mainGHCI +    [] -> mainGHCI +    _ -> die "Command line not recognised" | 
