]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blobdiff - src/Configuration.hs
Allow "TBA" laps in TSN.XML.AutoRacingSchedule.
[dead/htsn-import.git] / src / Configuration.hs
index feefe92f3761eb2ba7dcb68859255a7c27c28b80..4d9a1c659c3420c33d1a55448c576280a8460270 100644 (file)
@@ -7,21 +7,28 @@ module Configuration (
   merge_optional )
 where
 
+-- System imports.
 import System.Console.CmdArgs.Default ( Default(..) )
 import System.Log ( Priority( INFO ) )
 
+-- Local imports.
+import Backend ( Backend(..) )
+import ConnectionString ( ConnectionString )
 import qualified OptionalConfiguration as OC (
   OptionalConfiguration(..),
   merge_maybes )
 
 
--- | The main configuration data type. This will be passed to most of
---   the important functions once it has been created.
+-- | The main configuration data type. It contains all options that
+--   can be set in a config file or on the command line.
+--
 data Configuration =
   Configuration {
-    connection_string :: String,
+    backend           :: Backend,
+    connection_string :: ConnectionString,
     log_file          :: Maybe FilePath,
     log_level         :: Priority,
+    remove            :: Bool,
     syslog            :: Bool }
     deriving (Show)
 
@@ -29,23 +36,28 @@ data Configuration =
 --   values.
 instance Default Configuration where
   def = Configuration {
+          backend           = def,
           connection_string = def,
           log_file          = def,
           log_level         = INFO,
-          syslog           = def }
+          remove            = def,
+          syslog            = def }
 
 
 -- | Merge a Configuration with an OptionalConfiguration. This is more
---   or less the Monoid instance for OptionalConfiguration, but since
+--   or less the Monoid instance for 'OptionalConfiguration', but since
 --   the two types are different, we have to repeat ourselves.
+--
 merge_optional :: Configuration
                -> OC.OptionalConfiguration
                -> Configuration
 merge_optional cfg opt_cfg =
   Configuration
+    (merge (backend cfg) (OC.backend opt_cfg))
     (merge (connection_string cfg) (OC.connection_string opt_cfg))
     (OC.merge_maybes (log_file cfg) (OC.log_file opt_cfg))
     (merge (log_level cfg) (OC.log_level opt_cfg))
+    (merge (remove cfg) (OC.remove opt_cfg))
     (merge (syslog cfg) (OC.syslog opt_cfg))
   where
     -- | If the thing on the right is Just something, return that