41 lines
914 B
Haskell
41 lines
914 B
Haskell
module Boot where
|
|
|
|
import Language.Haskell.GhcMod
|
|
import Control.Applicative ((<$>))
|
|
|
|
boot :: Options -> Cradle -> IO String
|
|
boot opt cradle = do
|
|
mods <- listModules opt cradle
|
|
langs <- listLanguages opt
|
|
flags <- listFlags opt
|
|
let opt' = addPackages opt
|
|
pre <- concat <$> mapM (browseModule opt' cradle) preBrowsedModules
|
|
return $ mods ++ langs ++ flags ++ pre
|
|
|
|
preBrowsedModules :: [String]
|
|
preBrowsedModules = [
|
|
"Prelude"
|
|
, "Control.Applicative"
|
|
, "Control.Exception"
|
|
, "Control.Monad"
|
|
, "Data.ByteString"
|
|
, "Data.Char"
|
|
, "Data.List"
|
|
, "Data.Maybe"
|
|
, "System.Directory"
|
|
, "System.FilePath"
|
|
, "System.IO"
|
|
]
|
|
|
|
preBrowsePackages :: [String]
|
|
preBrowsePackages = [
|
|
"bytestring"
|
|
, "directory"
|
|
, "filepath"
|
|
]
|
|
|
|
addPackages :: Options -> Options
|
|
addPackages opt = opt { ghcOpts = pkgs ++ ghcOpts opt}
|
|
where
|
|
pkgs = map ("-package " ++) preBrowsePackages
|