diff options
-rw-r--r-- | src/Main.hs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/Main.hs b/src/Main.hs index cd406294..bea0dc5c 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -65,22 +65,38 @@ type CheckedMod = (Module, FullyCheckedMod, FilePath) main :: IO () main = do + + -- first, get the GHC library dir (-B option) args <- getArgs (libDir, rest) <- getLibDir args + + -- find out which flag mode we are in let (isGHCMode, rest') = parseModeFlag rest + + -- initialize GHC (session, dynflags) <- startGHC libDir + -- parse GHC flags given to the program (dynflags', rest'') <- if isGHCMode then parseGHCFlags_GHCMode dynflags rest' else parseGHCFlags_HaddockMode dynflags rest' + setSessionDynFlags session dynflags' + -- parse Haddock specific flags (flags, fileArgs) <- parseHaddockOpts rest'' - setSessionDynFlags session dynflags' + -- try to sort and check the input files using the GHC API modules <- sortAndCheckModules session dynflags' fileArgs + -- create a PackageData for each external package in the session + -- using the GHC API. The PackageData contains an html path, + -- a doc env and a list of module names. packages <- getPackages session dynflags' + + -- update the html references (module -> html file mapping) updateHTMLXRefs packages + + -- combine the doc envs of the external packages into one let env = packagesDocEnv packages -- TODO: continue to break up the run function into parts |