aboutsummaryrefslogtreecommitdiff
path: root/src/Config.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Config.hs')
-rw-r--r--src/Config.hs24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/Config.hs b/src/Config.hs
index 76371be..0a421fa 100644
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -6,7 +6,7 @@ module Config
, getConfig
) where
-import Data.Maybe (catMaybes, isJust)
+import Data.Maybe (catMaybes, isJust, fromMaybe)
import Data.Map (Map)
import qualified Data.Map as M
import Data.Text (Text)
@@ -18,6 +18,7 @@ import Control.Monad (guard)
import System.Directory (doesFileExist)
import Model.URL
+import Model.Config
import Utils.Text
@@ -33,6 +34,7 @@ configUsage =
, ""
, " - url (required)"
, " - mailTo (optional)"
+ , " - properties (optional)"
, ""
, " Example:"
, ""
@@ -41,16 +43,14 @@ configUsage =
, ""
, " # The mailTo field is an optional list"
, " # mailTo = jean.dupont@mail.fr, john.smith@mail.com"
+ , ""
+ , " # The properties field is an optional list"
+ , " # properties = cp, city, surface, ges"
]
configPath :: FilePath
configPath = "conf"
-data Config = Config
- { url :: URL
- , mailTo :: Maybe [Text]
- } deriving (Eq, Read, Show)
-
getConfig :: IO (Maybe Config)
getConfig = do
exists <- doesFileExist configPath
@@ -74,8 +74,16 @@ configFromFile =
configFromMap :: Map Text Text -> Maybe Config
configFromMap map = do
url <- M.lookup "url" map
- let mailTo = fmap T.strip . T.splitOn "," <$> M.lookup "mailTo" map
- return $ Config { url = url, mailTo = mailTo }
+ let config =
+ Config
+ { url = url
+ , mailTo = fieldValues "mailTo" map
+ , properties = fieldValues "properties" map
+ }
+ return config
+
+fieldValues :: Text -> Map Text Text -> [Text]
+fieldValues field map = fromMaybe [] $ fmap T.strip . T.splitOn "," <$> M.lookup field map
lineConfig :: Text -> Maybe (Text, Text)
lineConfig line = do