summoner-1.2.0: src/Summoner/Settings.hs
module Summoner.Settings
( Settings (..)
, CustomPrelude (..)
, customPreludeT
) where
import Toml (TomlCodec, (.=))
import Summoner.GhcVer (GhcVer)
import Summoner.License (License, LicenseName)
import qualified Toml
data CustomPrelude = CustomPrelude
{ cpPackage :: Text
, cpModule :: Text
} deriving (Show, Eq)
customPreludeT :: TomlCodec CustomPrelude
customPreludeT = CustomPrelude
<$> Toml.text "package" .= cpPackage
<*> Toml.text "module" .= cpModule
-- | Data needed for project creation.
data Settings = Settings
{ settingsRepo :: !Text -- ^ repository name
, settingsOwner :: !Text -- ^ github username
, settingsDescription :: !Text -- ^ project description
, settingsFullName :: !Text -- ^ full name
, settingsEmail :: !Text -- ^ e-mail
, settingsYear :: !Text -- ^ year
, settingsCategories :: !Text -- ^ project category
, settingsLicenseName :: !LicenseName -- ^ type of license
, settingsLicenseText :: !License -- ^ license text
, settingsGitHub :: !Bool -- ^ GitHub repository
, settingsPrivate :: !Bool -- ^ private repository
, settingsTravis :: !Bool -- ^ Travis CI integration
, settingsAppVeyor :: !Bool -- ^ AppVeyor CI integration
, settingsIsLib :: !Bool -- ^ is library
, settingsIsExe :: !Bool -- ^ is executable
, settingsTest :: !Bool -- ^ add tests
, settingsBench :: !Bool -- ^ add benchmarks
, settingsTestedVersions :: ![GhcVer] -- ^ GHC versions
, settingsBaseType :: !Text -- ^ Base library to use
, settingsPrelude :: !(Maybe CustomPrelude) -- ^ custom prelude to be used
, settingsExtensions :: ![Text] -- ^ default extensions
, settingsWarnings :: ![Text] -- ^ default warnings
, settingsCabal :: !Bool
, settingsStack :: !Bool
, settingsStylish :: !(Maybe Text) -- ^ @.stylish-haskell.yaml@ file
, settingsContributing :: !(Maybe Text) -- ^ @CONTRIBUTING.md@ file
, settingsNoUpload :: !Bool -- ^ do not upload to GitHub
} deriving (Show)