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}