-beginMake [] = throwDyn (UsageError "no input files")
-beginMake (_:_:_) = throwDyn (UsageError "only one module allowed with --make")
-{-
-beginMake [mod] = do
- state <- cmInit ""{-ToDo:remove-} pkg_details
- cmLoadModule state (mkModuleName mod)
--}
-
-beginInteractive srcs = panic "`ghc --interactive' unimplemented"
+beginMake :: [String] -> IO ()
+beginMake mods
+ = do case mods of
+ [] -> throwDyn (UsageError "no input files")
+ [mod] -> do state <- cmInit Batch
+ cmLoadModule state mod
+ return ()
+ _ -> throwDyn (UsageError "only one module allowed with --make")
+
+
+beginInteractive :: [String] -> IO ()
+#ifndef GHCI
+beginInteractive = throwDyn (OtherError "not build for interactive use")
+#else
+beginInteractive mods
+ = do state <- cmInit Interactive
+ let mod = case mods of
+ [] -> Nothing
+ [mod] -> Just mod
+ _ -> throwDyn (UsageError
+ "only one module allowed with --interactive")
+ interactiveUI state mod
+#endif