haskell-ci-0.14: src/HaskellCI/Config/Docspec.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module HaskellCI.Config.Docspec (
DocspecConfig (..),
docspecConfigGrammar,
) 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.20211114/cabal-docspec-0.0.0.20211114.xz"
, cfgDocspecHash = "e224700d9e8c9ec7ec6bc3f542ba433cd9925a5d356676c62a9bd1f2c8be8f8a"
}
-------------------------------------------------------------------------------
-- Grammar
-------------------------------------------------------------------------------
docspecConfigGrammar
:: (OptionsGrammar c g, Applicative (g DocspecConfig))
=> g DocspecConfig DocspecConfig
docspecConfigGrammar = DocspecConfig
<$> rangeField "docspec" (field @"cfgDocspecEnabled") (cfgDocspecEnabled defaultDocspecConfig)
^^^ 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"