load,
lookup )
import Data.Data ( Data )
-import Data.Typeable ( Typeable )
-import Data.Monoid ( Monoid(..) )
+import Data.Monoid ( Monoid() )
+import Data.Semigroup ( Semigroup() )
import Paths_mailbox_count ( getSysconfDir )
import System.Directory ( getHomeDirectory )
import System.FilePath ( (</>) )
OptionalConfiguration {
database :: Maybe String,
detail :: Maybe Bool,
+ detail_query :: Maybe String,
host :: Maybe String,
password :: Maybe String,
port :: Maybe Int,
+ summary_query :: Maybe String,
username :: Maybe String }
- deriving (Show, Data, Typeable)
+ deriving (Show, Data)
-- | Combine two Maybes into one, essentially mashing them
Nothing
Nothing
Nothing
+ Nothing
+ Nothing
+instance Semigroup OptionalConfiguration where
-- | Combine @cfg1@ and @cfg2@, giving precedence to @cfg2@.
- cfg1 `mappend` cfg2 =
+ cfg1 <> cfg2 =
OptionalConfiguration
(merge_maybes (database cfg1) (database cfg2))
(merge_maybes (detail cfg1) (detail cfg2))
+ (merge_maybes (detail_query cfg1) (detail_query cfg2))
(merge_maybes (host cfg1) (host cfg2))
(merge_maybes (password cfg1) (password cfg2))
(merge_maybes (port cfg1) (port cfg2))
+ (merge_maybes (summary_query cfg1) (summary_query cfg2))
(merge_maybes (username cfg1) (username cfg2))
DC.Optional user_config_path ]
cfg_database <- DC.lookup cfg "database"
cfg_detail <- DC.lookup cfg "detail"
+ cfg_detail_query <- DC.lookup cfg "detail_query"
cfg_host <- DC.lookup cfg "host"
cfg_password <- DC.lookup cfg "password"
cfg_port <- DC.lookup cfg "port"
+ cfg_summary_query <- DC.lookup cfg "summary_query"
cfg_username <- DC.lookup cfg "username"
return $ OptionalConfiguration
cfg_database
cfg_detail
+ cfg_detail_query
cfg_host
cfg_password
cfg_port
+ cfg_summary_query
cfg_username