----------------------------------------------------------------------------- -- | -- Module : Distribution.Simple.Program.Hpc -- Copyright : Thomas Tuegel 2011 -- -- Maintainer : cabal-devel@haskell.org -- Portability : portable -- -- This module provides an library interface to the @hpc@ program. module Distribution.Simple.Program.Hpc ( markup , union ) where import Distribution.ModuleName ( ModuleName ) import Distribution.Simple.Program.Run ( ProgramInvocation, programInvocation, runProgramInvocation ) import Distribution.Simple.Program.Types ( ConfiguredProgram ) import Distribution.Text ( display ) import Distribution.Verbosity ( Verbosity ) markup :: ConfiguredProgram -> Verbosity -> FilePath -- ^ Path to .tix file -> FilePath -- ^ Path to directory with .mix files -> FilePath -- ^ Path where html output should be located -> [ModuleName] -- ^ List of modules to exclude from report -> IO () markup hpc verbosity tixFile hpcDir destDir excluded = runProgramInvocation verbosity (markupInvocation hpc tixFile hpcDir destDir excluded) markupInvocation :: ConfiguredProgram -> FilePath -- ^ Path to .tix file -> FilePath -- ^ Path to directory with .mix files -> FilePath -- ^ Path where html output should be -- located -> [ModuleName] -- ^ List of modules to exclude from -- report -> ProgramInvocation markupInvocation hpc tixFile hpcDir destDir excluded = let args = [ "markup", tixFile , "--hpcdir=" ++ hpcDir , "--destdir=" ++ destDir ] ++ ["--exclude=" ++ display moduleName | moduleName <- excluded ] in programInvocation hpc args union :: ConfiguredProgram -> Verbosity -> [FilePath] -- ^ Paths to .tix files -> FilePath -- ^ Path to resultant .tix file -> [ModuleName] -- ^ List of modules to exclude from union -> IO () union hpc verbosity tixFiles outFile excluded = runProgramInvocation verbosity (unionInvocation hpc tixFiles outFile excluded) unionInvocation :: ConfiguredProgram -> [FilePath] -- ^ Paths to .tix files -> FilePath -- ^ Path to resultant .tix file -> [ModuleName] -- ^ List of modules to exclude from union -> ProgramInvocation unionInvocation hpc tixFiles outFile excluded = programInvocation hpc $ concat [ ["sum", "--union"] , tixFiles , ["--output=" ++ outFile] , ["--exclude=" ++ display moduleName | moduleName <- excluded ] ]