packages feed

inventory-0.1.0.4: src/Output.hs

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

import           System.IO (stdout)

import           DefCounts.Output
import           GHC.Api
#if MIN_VERSION_ghc(9,2,0)
  (DynFlags, initSDocContext)
#else
  (DynFlags)
#endif
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 MIN_VERSION_ghc(9,2,0)
  let pprStyle = setStyleColoured True defaultUserStyle
      sDocCtx = initSDocContext dynFlags pprStyle
  printSDocLn sDocCtx (PageMode True) stdout sDoc
#elif MIN_VERSION_ghc(9,0,0)
  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