packages feed

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}