0 | module Hedgehog.Internal.Config
2 | import Derive.Prelude
5 | %language ElabReflection
15 | data UseColor = DisableColor | EnableColor
17 | %runElab derive "UseColor" [Show,Eq,Ord]
21 | data Verbosity = Quiet | Normal
23 | %runElab derive "Verbosity" [Show,Eq,Ord]
31 | interface HasConfig m where
32 | constructor MkHasConfig
33 | detectColor : m UseColor
34 | detectVerbosity : m Verbosity
37 | resolveColor : HasConfig m => Applicative m => Maybe UseColor -> m UseColor
38 | resolveColor = maybe detectColor pure
41 | resolveVerbosity : HasConfig m => Applicative m => Maybe Verbosity -> m Verbosity
42 | resolveVerbosity = maybe detectVerbosity pure
44 | lookupBool : HasIO io => String -> io (Maybe Bool)
48 | Just "0" => pure $
Just False
49 | Just "no" => pure $
Just False
50 | Just "false" => pure $
Just False
52 | Just "1" => pure $
Just True
53 | Just "yes" => pure $
Just True
54 | Just "true" => pure $
Just True
60 | HasIO io => HasConfig io where
62 | Just True <- lookupBool "HEDGEHOG_COLOR" | _ => pure DisableColor
65 | detectVerbosity = do
66 | Just "0" <- getEnv "HEDGEHOG_VERBOSITY" | _ => pure Normal
74 | DefaultConfig : Applicative m => HasConfig m
75 | DefaultConfig = D where
76 | [D] HasConfig m where
77 | detectColor = pure DisableColor
78 | detectVerbosity = pure Normal