summaryrefslogtreecommitdiff
path: root/lib/SlackBuilder/Config.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/SlackBuilder/Config.hs')
-rw-r--r--lib/SlackBuilder/Config.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/SlackBuilder/Config.hs b/lib/SlackBuilder/Config.hs
new file mode 100644
index 0000000..c2a7f0b
--- /dev/null
+++ b/lib/SlackBuilder/Config.hs
@@ -0,0 +1,37 @@
+module SlackBuilder.Config
+ ( Settings(..)
+ , MaintainerSettings(..)
+ , settingsCodec
+ ) where
+
+import Data.Text (Text)
+import Toml ((.=))
+import qualified Toml
+
+data Settings = Settings
+ { ghToken :: !Text
+ , repository :: !FilePath
+ , branch :: Text
+ , downloadURL :: Text
+ , remotePath :: Text
+ , maintainer :: MaintainerSettings
+ } deriving (Eq, Show)
+
+data MaintainerSettings = MaintainerSettings
+ { name :: !Text
+ , email :: !Text
+ } deriving (Eq, Show)
+
+settingsCodec :: Toml.TomlCodec Settings
+settingsCodec = Settings
+ <$> Toml.text "gh_token" .= ghToken
+ <*> Toml.string "repository" .= repository
+ <*> Toml.text "branch" .= branch
+ <*> Toml.text "download_url" .= downloadURL
+ <*> Toml.text "remote_path" .= remotePath
+ <*> Toml.table maintainerSettingsCodec "maintainer" .= maintainer
+
+maintainerSettingsCodec :: Toml.TomlCodec MaintainerSettings
+maintainerSettingsCodec = MaintainerSettings
+ <$> Toml.text "name" .= name
+ <*> Toml.text "email" .= email