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 , signature :: !Bool } 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 <*> Toml.bool "signature" .= signature