@@ -25,6 +25,7 @@ import Control.Monad
25import Control.Monad.Writer.Strict
25import Control.Monad.Writer.Strict
27import qualified Data.Aeson as A
27import qualified Data.Aeson as A
28+import Data.Bool (bool)
28import qualified Data.ByteString.Lazy as B
29import qualified Data.ByteString.Lazy as B
29import qualified Data.ByteString.UTF8 as BU8
30import qualified Data.ByteString.UTF8 as BU8
30import qualified Data.Map as M
31import qualified Data.Map as M
@@ -37,6 +38,7 @@ import Options.Applicative as Opts
38import qualified Paths_purescript as Paths
39import qualified Paths_purescript as Paths
41+import qualified System.Console.ANSI as ANSI
40import System.Exit (exitSuccess, exitFailure)
42import System.Exit (exitSuccess, exitFailure)
41import System.FilePath.Glob (glob)
43import System.FilePath.Glob (glob)
42import System.IO (hSetEncoding, hPutStrLn, stdout, stderr, utf8)
44import System.IO (hSetEncoding, hPutStrLn, stdout, stderr, utf8)
@@ -56,11 +58,13 @@ data PCCMakeOptions = PCCMakeOptions
56-- | Argumnets: verbose, use JSON, warnings, errors
58-- | Argumnets: verbose, use JSON, warnings, errors
57printWarningsAndErrors :: Bool -> Bool -> P.MultipleErrors -> Either P.MultipleErrors a -> IO ()
59printWarningsAndErrors :: Bool -> Bool -> P.MultipleErrors -> Either P.MultipleErrors a -> IO ()
58printWarningsAndErrors verbose False warnings errors = do
60printWarningsAndErrors verbose False warnings errors = do
61+ cc <- bool Nothing (Just P.defaultCodeColor) <$> ANSI.hSupportsANSI stderr
62+ let ppeOpts = P.defaultPPEOptions { P.ppeCodeColor = cc, P.ppeFull = verbose }
59 when (P.nonEmpty warnings) $
63 when (P.nonEmpty warnings) $
60− hPutStrLn stderr (P.prettyPrintMultipleWarnings verbose warnings)
64+ hPutStrLn stderr (P.prettyPrintMultipleWarnings ppeOpts warnings)
61 case errors of
65 case errors of
62 Left errs -> do
66 Left errs -> do
63− hPutStrLn stderr (P.prettyPrintMultipleErrors verbose errs)
67+ hPutStrLn stderr (P.prettyPrintMultipleErrors ppeOpts errs)
64 exitFailure
68 exitFailure
65 Right _ -> return ()
69 Right _ -> return ()
66printWarningsAndErrors verbose True warnings errors = do
70printWarningsAndErrors verbose True warnings errors = do