evoke-0.2022.8.26: source/library/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}