40 lines
1.1 KiB
Haskell
40 lines
1.1 KiB
Haskell
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
|