Support VCS clone configuration
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user