stack-2.11.1: src/Stack/Types/DumpLogs.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE OverloadedStrings #-}
module Stack.Types.DumpLogs
( DumpLogs (..)
) where
import Pantry.Internal.AesonExtended
( FromJSON (..), Value (..), withText )
import Stack.Prelude
-- | Which build log files to dump
data DumpLogs
= DumpNoLogs -- ^ don't dump any logfiles
| DumpWarningLogs -- ^ dump logfiles containing warnings
| DumpAllLogs -- ^ dump all logfiles
deriving (Bounded, Enum, Eq, Ord, Read, Show)
instance FromJSON DumpLogs where
parseJSON (Bool True) = pure DumpAllLogs
parseJSON (Bool False) = pure DumpNoLogs
parseJSON v =
withText
"DumpLogs"
(\t ->
if | t == "none" -> pure DumpNoLogs
| t == "warning" -> pure DumpWarningLogs
| t == "all" -> pure DumpAllLogs
| otherwise -> fail ("Invalid DumpLogs: " ++ show t))
v