diff options
Diffstat (limited to 'lib/SlackBuilder/Config.hs')
| -rw-r--r-- | lib/SlackBuilder/Config.hs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/lib/SlackBuilder/Config.hs b/lib/SlackBuilder/Config.hs index 88d2253..cb4b4cf 100644 --- a/lib/SlackBuilder/Config.hs +++ b/lib/SlackBuilder/Config.hs @@ -4,7 +4,8 @@ -- | Configuration file. module SlackBuilder.Config - ( DownloaderSettings(..) + ( CloneSettings(..) + , DownloaderSettings(..) , Settings(..) , MaintainerSettings(..) , PackageSettings(..) @@ -33,17 +34,24 @@ newtype MaintainerSettings = MaintainerSettings data DownloaderSettings = DownloaderSettings { name :: Text - , template :: Text , is64 :: Bool , version :: Text + , template :: Maybe Text + , clone :: Maybe CloneSettings , github :: Maybe (Text, Text) , packagist :: Maybe (Text, Text) , text :: Maybe (Text, [String]) , repackage :: Maybe [String] } deriving (Eq, Show) -newtype PackageSettings = PackageSettings +data PackageSettings = PackageSettings { downloader :: DownloaderSettings + , downloaders :: [DownloaderSettings] + } deriving (Eq, Show) + +data CloneSettings = CloneSettings + { remote :: Text + , tagTemplate :: Text } deriving (Eq, Show) settingsCodec :: Toml.TomlCodec Settings @@ -63,9 +71,10 @@ maintainerSettingsCodec = MaintainerSettings downloaderSettingsCodec :: Toml.TomlCodec DownloaderSettings downloaderSettingsCodec = DownloaderSettings <$> Toml.text "name" .= name - <*> Toml.text "template" .= template <*> Toml.bool "is64" .= is64 <*> Toml.text "version" .= version + <*> Toml.dioptional (Toml.text "template") .= template + <*> Toml.dioptional (Toml.table cloneSettingsCodec "clone") .= clone <*> Toml.dioptional (Toml.table githubCodec "github") .= github <*> Toml.dioptional (Toml.table packagistCodec "packagist") .= packagist <*> Toml.dioptional (Toml.table textCodec "text") .= text @@ -76,4 +85,11 @@ downloaderSettingsCodec = DownloaderSettings textCodec = Toml.pair (Toml.text "url") (Toml.arrayOf Toml._String "picker") packageSettingsCodec :: Toml.TomlCodec PackageSettings -packageSettingsCodec = Toml.dimap (getField @"downloader") PackageSettings downloaderSettingsCodec +packageSettingsCodec = PackageSettings + <$> downloaderSettingsCodec .= getField @"downloader" + <*> Toml.list downloaderSettingsCodec "downloader" .= downloaders + +cloneSettingsCodec :: Toml.TomlCodec CloneSettings +cloneSettingsCodec = CloneSettings + <$> Toml.text "remote" .= remote + <*> Toml.text "tag_template" .= tagTemplate |
