From bb47ceb356803245c6519566d5aa9603a94baa23 Mon Sep 17 00:00:00 2001 From: Duncan Coutts <duncan@haskell.org> Date: Fri, 7 Dec 2007 13:03:09 +0000 Subject: [PATCH] Fix hscolour code so it only outputs the css once per-lib or exe Rather than for every module in the lib. Tidy the code up a little too. --- Distribution/Simple/Haddock.hs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/Distribution/Simple/Haddock.hs b/Distribution/Simple/Haddock.hs index 6c6a549ae0..0810511ffb 100644 --- a/Distribution/Simple/Haddock.hs +++ b/Distribution/Simple/Haddock.hs @@ -319,28 +319,29 @@ hscolour pkg_descr lbi suffixes (HscolourFlags stylesheet doExes verbosity) = do withLib pkg_descr () $ \lib -> when (isJust $ library pkg_descr) $ do let bi = libBuildInfo lib - let modules = exposedModules lib ++ otherModules bi + modules = exposedModules lib ++ otherModules bi + outputDir = hscolourPref pkg_descr </> "src" + createDirectoryIfMissingVerbose verbosity True outputDir + copyCSS hscolourProg outputDir inFiles <- getModulePaths lbi bi modules - flip mapM_ (zip modules inFiles) $ \(mo, inFile) -> do - let outputDir = hscolourPref pkg_descr </> "src" + flip mapM_ (zip modules inFiles) $ \(mo, inFile) -> let outFile = outputDir </> replaceDot mo <.> "html" - createDirectoryIfMissingVerbose verbosity True outputDir - copyCSS hscolourProg outputDir - rawSystemProgram verbosity hscolourProg + in rawSystemProgram verbosity hscolourProg ["-css", "-anchor", "-o" ++ outFile, inFile] withExe pkg_descr $ \exe -> when doExes $ do let bi = buildInfo exe - let modules = "Main" : otherModules bi - let outputDir = hscolourPref pkg_descr </> exeName exe </> "src" + modules = "Main" : otherModules bi + outputDir = hscolourPref pkg_descr </> exeName exe </> "src" createDirectoryIfMissingVerbose verbosity True outputDir copyCSS hscolourProg outputDir srcMainPath <- findFile (hsSourceDirs bi) (modulePath exe) inFiles <- liftM (srcMainPath :) $ getModulePaths lbi bi (otherModules bi) - flip mapM_ (zip modules inFiles) $ \(mo, inFile) -> do + flip mapM_ (zip modules inFiles) $ \(mo, inFile) -> let outFile = outputDir </> replaceDot mo <.> "html" - rawSystemProgram verbosity hscolourProg + in rawSystemProgram verbosity hscolourProg ["-css", "-anchor", "-o" ++ outFile, inFile] + where copyCSS hscolourProg dir = case stylesheet of Nothing | programVersion hscolourProg >= Just (Version [1,9] []) -> rawSystemProgram verbosity hscolourProg -- GitLab