summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/SlackBuilder/Config.hs26
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