haskell-ci-0.12: src/HaskellCI/Config/Docspec.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module HaskellCI.Config.Docspec where
import HaskellCI.Prelude
import qualified Distribution.FieldGrammar as C
import HaskellCI.OptionsGrammar
data DocspecConfig = DocspecConfig
{ cfgDocspecEnabled :: !VersionRange
, cfgDocspecOptions :: [String]
, cfgDocspecUrl :: String
, cfgDocspecHash :: String
}
deriving (Show, Generic, Binary)
-------------------------------------------------------------------------------
-- Default
-------------------------------------------------------------------------------
defaultDocspecConfig :: DocspecConfig
defaultDocspecConfig = DocspecConfig
{ cfgDocspecEnabled = noVersion
, cfgDocspecOptions = []
, cfgDocspecUrl = "https://github.com/phadej/cabal-extras/releases/download/cabal-docspec-0.0.0.20210111/cabal-docspec-0.0.0.20210111.xz"
, cfgDocspecHash = "0829bd034fba901cbcfe491d98ed8b28fd54f9cb5c91fa8e1ac62dc4413c9562"
}
-------------------------------------------------------------------------------
-- Grammar
-------------------------------------------------------------------------------
docspecConfigGrammar
:: (OptionsGrammar c g, Applicative (g DocspecConfig))
=> g DocspecConfig DocspecConfig
docspecConfigGrammar = DocspecConfig
<$> rangeField "docspec" (field @"cfgDocspecEnabled") noVersion
^^^ help "Enable Docspec job"
<*> C.monoidalFieldAla "docspec-options" (C.alaList' C.NoCommaFSep C.Token') (field @"cfgDocspecOptions")
^^^ metahelp "OPTS" "Additional Docspec options"
<*> C.optionalFieldDefAla "docspec-url" C.Token' (field @"cfgDocspecUrl") (cfgDocspecUrl defaultDocspecConfig)
^^^ metahelp "URL" "URL to download cabal-docspec"
<*> C.optionalFieldDefAla "docspec-hash" C.Token' (field @"cfgDocspecHash") (cfgDocspecHash defaultDocspecConfig)
^^^ metahelp "HASH" "SHA256 of cabal-docspec"