--
module Configuration (
- Cfg(..)
+ Cfg(..),
+ default_config,
+ merge_optional
)
where
import qualified OptionalConfiguration as OC
+import Usernames
data Cfg =
Cfg { consumer_key :: String,
sendmail_path :: String,
from_address :: Maybe String,
to_address :: Maybe String,
- verbose :: Bool }
-
+ verbose :: Bool,
+ usernames :: Usernames }
+ deriving (Show)
default_config :: Cfg
sendmail_path = "/usr/sbin/sendmail",
from_address = Nothing,
to_address = Nothing,
- verbose = False }
+ verbose = False,
+ usernames = Usernames [] }
merge_optional :: Cfg -> OC.OptionalCfg -> Cfg
merge_optional cfg opt_cfg =
(merge' (from_address cfg) (OC.from_address opt_cfg))
(merge' (to_address cfg) (OC.to_address opt_cfg))
(merge (verbose cfg) (OC.verbose opt_cfg))
+ all_usernames
where
merge :: a -> Maybe a -> a
merge x Nothing = x
merge' (Just x) Nothing = Just x
merge' Nothing (Just x) = Just x
merge' (Just _) (Just y) = Just y
+
+ -- If there are any optional usernames, use only those.
+ all_usernames = if (null (get_usernames (OC.usernames opt_cfg)))
+ then (usernames cfg)
+ else (OC.usernames opt_cfg)