X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FOptionalConfiguration.hs;h=49355f2de743dfcdbc887606df408488ba73e60a;hb=HEAD;hp=ce99f5f9517beeb2e4907da77e7a32ea00cdd378;hpb=9d278c8b8eeff1a1317f2c3b0f7fdf5fb759ffb3;p=dead%2Fhtsn-import.git diff --git a/src/OptionalConfiguration.hs b/src/OptionalConfiguration.hs index ce99f5f..49355f2 100644 --- a/src/OptionalConfiguration.hs +++ b/src/OptionalConfiguration.hs @@ -15,6 +15,7 @@ module OptionalConfiguration ( merge_maybes ) where +-- System imports. import qualified Data.Configurator as DC ( Worth(Optional), load, @@ -33,7 +34,9 @@ import System.IO.Error ( catchIOError ) import System.Log ( Priority(..) ) import Text.Read ( readMaybe ) +-- Local imports. import Backend ( Backend(..) ) +import ConnectionString ( ConnectionString ) import Network.Services.TSN.Report ( report_error ) @@ -43,17 +46,18 @@ import Network.Services.TSN.Report ( report_error ) deriving instance Data Priority deriving instance Typeable Priority --- | The same as Configuration, except everything is optional. It's easy to --- merge two of these by simply dropping the Nothings in favor of --- the Justs. The 'feed_hosts' are left un-maybed so that cmdargs --- can parse more than one of them. +-- | The same as 'Configuration', except everything is optional. It's +-- easy to merge two of these by simply dropping the 'Nothing's in +-- favor of the 'Just's. The 'xml_files' are left un-maybed so that +-- cmdargs can parse more than one of them. -- data OptionalConfiguration = OptionalConfiguration { backend :: Maybe Backend, - connection_string :: Maybe String, + connection_string :: Maybe ConnectionString, log_file :: Maybe FilePath, log_level :: Maybe Priority, + remove :: Maybe Bool, syslog :: Maybe Bool, xml_files :: [FilePath] } deriving (Show, Data, Typeable) @@ -69,8 +73,8 @@ merge_maybes Nothing (Just x) = Just x merge_maybes (Just _) (Just y) = Just y --- | The Monoid instance for these lets us "combine" two --- OptionalConfigurations. The "combine" operation that we'd like to +-- | The Monoid instance for these lets us \"combine\" two +-- OptionalConfigurations. The \"combine\" operation that we'd like to -- perform is, essentially, to mash them together. So if we have two -- OptionalConfigurations, each half full, we could combine them -- into one big one. @@ -79,7 +83,14 @@ merge_maybes (Just _) (Just y) = Just y -- instance Monoid OptionalConfiguration where -- | An empty OptionalConfiguration. - mempty = OptionalConfiguration Nothing Nothing Nothing Nothing Nothing [] + mempty = OptionalConfiguration + Nothing + Nothing + Nothing + Nothing + Nothing + Nothing + [] -- | Combine @cfg1@ and @cfg2@, giving precedence to @cfg2@. @@ -91,6 +102,7 @@ instance Monoid OptionalConfiguration where (merge_maybes (connection_string cfg1) (connection_string cfg2)) (merge_maybes (log_file cfg1) (log_file cfg2)) (merge_maybes (log_level cfg1) (log_level cfg2)) + (merge_maybes (remove cfg1) (remove cfg2)) (merge_maybes (syslog cfg1) (syslog cfg2)) ((xml_files cfg1) ++ (xml_files cfg2)) @@ -130,6 +142,7 @@ from_rc = do cfg_connection_string <- DC.lookup cfg "connection_string" cfg_log_file <- DC.lookup cfg "log_file" cfg_log_level <- DC.lookup cfg "log_level" + cfg_remove <- DC.lookup cfg "remove" cfg_syslog <- DC.lookup cfg "syslog" let cfg_xml_files = [] -- This won't be in the config file. return $ OptionalConfiguration @@ -139,5 +152,6 @@ from_rc = do cfg_connection_string cfg_log_file cfg_log_level + cfg_remove cfg_syslog cfg_xml_files