never executed always true always false
1 {-# LANGUAGE DeriveGeneric #-}
2 module Distribution.Client.Types.OverwritePolicy where
3
4 import Distribution.Client.Compat.Prelude
5 import Prelude ()
6
7 import qualified Distribution.Compat.CharParsing as P
8 import qualified Text.PrettyPrint as PP
9
10 data OverwritePolicy
11 = NeverOverwrite
12 | AlwaysOverwrite
13 deriving (Show, Eq, Generic, Bounded, Enum)
14
15 instance Binary OverwritePolicy
16 instance Structured OverwritePolicy
17
18 instance Parsec OverwritePolicy where
19 parsec = do
20 name <- P.munch1 isAlpha
21 case name of
22 "always" -> pure AlwaysOverwrite
23 "never" -> pure NeverOverwrite
24 _ -> P.unexpected $ "OverwritePolicy: " ++ name
25
26 instance Pretty OverwritePolicy where
27 pretty NeverOverwrite = PP.text "never"
28 pretty AlwaysOverwrite = PP.text "always"