]> gitweb.michael.orlitzky.com - mailbox-count.git/blobdiff - src/OptionalConfiguration.hs
src,test: use explicit import/export lists.
[mailbox-count.git] / src / OptionalConfiguration.hs
index 0bd093b457acc174d4ed5637824c51a3eb17026d..4faff205cfd416318a2bbc0fb03fa833fbd34100 100644 (file)
@@ -20,7 +20,8 @@ import qualified Data.Configurator as DC (
   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 ( (</>) )
@@ -36,9 +37,11 @@ data OptionalConfiguration =
   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)
 
@@ -70,15 +73,20 @@ instance Monoid OptionalConfiguration where
              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))
 
 
@@ -106,15 +114,19 @@ from_rc = do
                    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