diff options
Diffstat (limited to 'Main.hs')
-rw-r--r-- | Main.hs | 43 |
1 files changed, 2 insertions, 41 deletions
@@ -1,48 +1,9 @@ module Main where -import System.Exit -import System.Plugins - -ghcargs :: [String] -ghcargs = ["-XPatternGuards"] +import Hsbot -- | Dynamic launching function main :: IO () main = do - putStrLn "hsbot starting..." - m <- makeAll "Hsbot.hs" ghcargs - (modul', imain) <- case m of - MakeSuccess _ _ -> do - ldstat <- load_ "Hsbot/Main.o" [".","Hsbot","Hsbot/Plugins"] "imain" - case ldstat of - LoadSuccess v m' -> return (v,m') - LoadFailure e -> do - putStrLn "Couldn't load Hsbot.Main.imain:" - mapM_ putStrLn e - exitWith $ ExitFailure 127 - MakeFailure e -> do - putStrLn "FATAL: Couldn't compile Hsbot.hs:" - mapM_ putStrLn e - exitWith $ ExitFailure 127 - putStrLn "Compiled & Loaded Hsbot.Main.imain..." - imain modul' reboot - --- | Dynamic rebooting function -reboot :: Module -> a -> b -> IO () -reboot modul' state chan = do - mkstat <- makeAll "Hsbot.hs" ghcargs - case mkstat of - MakeSuccess _ _ -> do - unloadAll modul' - ldstat <- load_ "Hsbot/Main.o" [".","Hsbot","Hsbot/Plugins"] "imain'" - case ldstat of - LoadSuccess modul'' imain' -> do - putStrLn "REBOOT: Successful recompilation & reloading, rebooting..." - imain' modul'' reboot state chan - LoadFailure e -> fatality e - MakeFailure e -> fatality e - where - fatality errs = do - putStrLn $ "REBOOT: FATAL: Couldn't reboot thread, err:" - mapM_ putStrLn errs + imain |