evoke-0.2021.8.25: src/lib/Evoke/Type/Config.hs
module Evoke.Type.Config
( Config(..)
, fromFlags
) where
import qualified Data.List as List
import qualified Evoke.Type.Flag as Flag
data Config = Config
{ help :: Bool
, verbose :: Bool
, version :: Bool
}
deriving (Eq, Show)
initial :: Config
initial = Config { help = False, verbose = False, version = False }
fromFlags :: Foldable t => t Flag.Flag -> Config
fromFlags = List.foldl' applyFlag initial
applyFlag :: Config -> Flag.Flag -> Config
applyFlag config flag = case flag of
Flag.Help -> config { help = True }
Flag.Verbose -> config { verbose = True }
Flag.Version -> config { version = True }