{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE OverloadedStrings #-}
module Stack.Types.DumpLogs
( DumpLogs (..)
) where
import Pantry.Internal.AesonExtended
( FromJSON (..), Value (..), withText )
import Stack.Prelude
data DumpLogs
= DumpNoLogs
| DumpWarningLogs
| DumpAllLogs
deriving (DumpLogs
forall a. a -> a -> Bounded a
maxBound :: DumpLogs
$cmaxBound :: DumpLogs
minBound :: DumpLogs
$cminBound :: DumpLogs
Bounded, Int -> DumpLogs
DumpLogs -> Int
DumpLogs -> [DumpLogs]
DumpLogs -> DumpLogs
DumpLogs -> DumpLogs -> [DumpLogs]
DumpLogs -> DumpLogs -> DumpLogs -> [DumpLogs]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: DumpLogs -> DumpLogs -> DumpLogs -> [DumpLogs]
$cenumFromThenTo :: DumpLogs -> DumpLogs -> DumpLogs -> [DumpLogs]
enumFromTo :: DumpLogs -> DumpLogs -> [DumpLogs]
$cenumFromTo :: DumpLogs -> DumpLogs -> [DumpLogs]
enumFromThen :: DumpLogs -> DumpLogs -> [DumpLogs]
$cenumFromThen :: DumpLogs -> DumpLogs -> [DumpLogs]
enumFrom :: DumpLogs -> [DumpLogs]
$cenumFrom :: DumpLogs -> [DumpLogs]
fromEnum :: DumpLogs -> Int
$cfromEnum :: DumpLogs -> Int
toEnum :: Int -> DumpLogs
$ctoEnum :: Int -> DumpLogs
pred :: DumpLogs -> DumpLogs
$cpred :: DumpLogs -> DumpLogs
succ :: DumpLogs -> DumpLogs
$csucc :: DumpLogs -> DumpLogs
Enum, DumpLogs -> DumpLogs -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DumpLogs -> DumpLogs -> Bool
$c/= :: DumpLogs -> DumpLogs -> Bool
== :: DumpLogs -> DumpLogs -> Bool
$c== :: DumpLogs -> DumpLogs -> Bool
Eq, Eq DumpLogs
DumpLogs -> DumpLogs -> Bool
DumpLogs -> DumpLogs -> Ordering
DumpLogs -> DumpLogs -> DumpLogs
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: DumpLogs -> DumpLogs -> DumpLogs
$cmin :: DumpLogs -> DumpLogs -> DumpLogs
max :: DumpLogs -> DumpLogs -> DumpLogs
$cmax :: DumpLogs -> DumpLogs -> DumpLogs
>= :: DumpLogs -> DumpLogs -> Bool
$c>= :: DumpLogs -> DumpLogs -> Bool
> :: DumpLogs -> DumpLogs -> Bool
$c> :: DumpLogs -> DumpLogs -> Bool
<= :: DumpLogs -> DumpLogs -> Bool
$c<= :: DumpLogs -> DumpLogs -> Bool
< :: DumpLogs -> DumpLogs -> Bool
$c< :: DumpLogs -> DumpLogs -> Bool
compare :: DumpLogs -> DumpLogs -> Ordering
$ccompare :: DumpLogs -> DumpLogs -> Ordering
Ord, ReadPrec [DumpLogs]
ReadPrec DumpLogs
Int -> ReadS DumpLogs
ReadS [DumpLogs]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DumpLogs]
$creadListPrec :: ReadPrec [DumpLogs]
readPrec :: ReadPrec DumpLogs
$creadPrec :: ReadPrec DumpLogs
readList :: ReadS [DumpLogs]
$creadList :: ReadS [DumpLogs]
readsPrec :: Int -> ReadS DumpLogs
$creadsPrec :: Int -> ReadS DumpLogs
Read, Int -> DumpLogs -> ShowS
[DumpLogs] -> ShowS
DumpLogs -> [Char]
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
showList :: [DumpLogs] -> ShowS
$cshowList :: [DumpLogs] -> ShowS
show :: DumpLogs -> [Char]
$cshow :: DumpLogs -> [Char]
showsPrec :: Int -> DumpLogs -> ShowS
$cshowsPrec :: Int -> DumpLogs -> ShowS
Show)
instance FromJSON DumpLogs where
parseJSON :: Value -> Parser DumpLogs
parseJSON (Bool Bool
True) = forall (f :: * -> *) a. Applicative f => a -> f a
pure DumpLogs
DumpAllLogs
parseJSON (Bool Bool
False) = forall (f :: * -> *) a. Applicative f => a -> f a
pure DumpLogs
DumpNoLogs
parseJSON Value
v =
forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a
withText
[Char]
"DumpLogs"
(\Text
t ->
if | Text
t forall a. Eq a => a -> a -> Bool
== Text
"none" -> forall (f :: * -> *) a. Applicative f => a -> f a
pure DumpLogs
DumpNoLogs
| Text
t forall a. Eq a => a -> a -> Bool
== Text
"warning" -> forall (f :: * -> *) a. Applicative f => a -> f a
pure DumpLogs
DumpWarningLogs
| Text
t forall a. Eq a => a -> a -> Bool
== Text
"all" -> forall (f :: * -> *) a. Applicative f => a -> f a
pure DumpLogs
DumpAllLogs
| Bool
otherwise -> forall (m :: * -> *) a. MonadFail m => [Char] -> m a
fail ([Char]
"Invalid DumpLogs: " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> [Char]
show Text
t))
Value
v