]> gitweb.michael.orlitzky.com - dead/halcyon.git/blobdiff - src/Configuration.hs
Create a Usernames newtype to fix an orphan instance.
[dead/halcyon.git] / src / Configuration.hs
index 39dd4e6f4cc46a58cd63be81471bbf2a80cfcbc0..095f5395f6bf7b6d0e4994ece60f453df1e5b614 100644 (file)
@@ -11,6 +11,7 @@ module Configuration (
 where
 
 import qualified OptionalConfiguration as OC
+import Usernames
 
 data Cfg =
   Cfg { consumer_key :: String,
@@ -24,7 +25,7 @@ data Cfg =
         from_address :: Maybe String,
         to_address :: Maybe String,
         verbose :: Bool,
-        usernames :: [String] }
+        usernames :: Usernames }
     deriving (Show)
 
 
@@ -41,7 +42,7 @@ default_config =
         from_address = Nothing,
         to_address = Nothing,
         verbose = False,
-        usernames = [] }
+        usernames = Usernames [] }
 
 merge_optional :: Cfg -> OC.OptionalCfg -> Cfg
 merge_optional cfg opt_cfg =
@@ -57,7 +58,7 @@ 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))
-    ((usernames cfg) ++ (OC.usernames opt_cfg))
+    all_usernames
   where
     merge :: a -> Maybe a -> a
     merge x Nothing  = x
@@ -69,3 +70,8 @@ merge_optional cfg opt_cfg =
     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)