packages feed

inventory-0.1.0.1: src/Output.hs

{-# LANGUAGE CPP #-}
module Output
  ( printResults
  ) where

import           System.IO (stdout)

import           DefCounts.Output
import           GHC.Api (DynFlags)
import           GHC.Output
import           HieFile (Counters)
import           MatchSigs.Output
import           UseCounts.Output

printResults :: DynFlags
             -> Counters
             -> IO ()
printResults dynFlags (defCounter, usageCounter, sigDupeMap, totalLines) = do
  let output = vcat
        [ separator
        , text ""
        , keyword $ text "Duplicate Type Signatures"
        , text ""
        , sigDuplicateOutput sigDupeMap
        , text ""
        , separator
        , text ""
        , keyword $ text "Usage Totals"
        , text ""
        , usageOutput usageCounter
        , text ""
        , separator
        , text ""
        , keyword $ text "Definition Counts"
        , text ""
        , defCountOutput defCounter totalLines
        , text ""
        , separator
        ]
      separator = coloured colGreenFg $ text "********************************************************************************"

  outputSDoc dynFlags output

outputSDoc :: DynFlags -> SDoc -> IO ()
outputSDoc dynFlags sDoc = do
#if __GLASGOW_HASKELL__ >= 900
  let pprStyle = setStyleColoured True defaultUserStyle
      sDocCtx = initSDocContext dynFlags pprStyle
  printSDocLn sDocCtx PageMode stdout sDoc
#else
  let pprStyle = setStyleColoured True $ defaultUserStyle dynFlags
  printSDocLn PageMode dynFlags stdout pprStyle sDoc
#endif