module Summoner.Settings
( Settings (..)
, Tool (..)
, showTool
, parseTool
) where
import Relude.Extra.Enum (inverseMap)
import Summoner.CustomPrelude (CustomPrelude)
import Summoner.GhcVer (GhcVer)
import Summoner.License (License, LicenseName)
import Summoner.Tree (TreeFs)
data Settings = Settings
{ Settings -> Text
settingsRepo :: !Text
, Settings -> Text
settingsOwner :: !Text
, Settings -> Text
settingsDescription :: !Text
, Settings -> Text
settingsFullName :: !Text
, Settings -> Text
settingsEmail :: !Text
, Settings -> Text
settingsYear :: !Text
, Settings -> Text
settingsCategories :: !Text
, Settings -> LicenseName
settingsLicenseName :: !LicenseName
, Settings -> License
settingsLicenseText :: !License
, Settings -> Bool
settingsGitHub :: !Bool
, Settings -> Bool
settingsPrivate :: !Bool
, Settings -> Bool
settingsGhActions :: !Bool
, Settings -> Bool
settingsTravis :: !Bool
, Settings -> Bool
settingsAppVeyor :: !Bool
, Settings -> Bool
settingsIsLib :: !Bool
, Settings -> Bool
settingsIsExe :: !Bool
, Settings -> Bool
settingsTest :: !Bool
, Settings -> Bool
settingsBench :: !Bool
, Settings -> [GhcVer]
settingsTestedVersions :: ![GhcVer]
, Settings -> Maybe CustomPrelude
settingsPrelude :: !(Maybe CustomPrelude)
, Settings -> [Text]
settingsExtensions :: ![Text]
, Settings -> [Text]
settingsGhcOptions :: ![Text]
, Settings -> [Text]
settingsGitignore :: ![Text]
, Settings -> Bool
settingsCabal :: !Bool
, Settings -> Bool
settingsStack :: !Bool
, Settings -> Bool
settingsNoUpload :: !Bool
, Settings -> [TreeFs]
settingsFiles :: ![TreeFs]
} deriving stock (Int -> Settings -> ShowS
[Settings] -> ShowS
Settings -> String
(Int -> Settings -> ShowS)
-> (Settings -> String) -> ([Settings] -> ShowS) -> Show Settings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Settings] -> ShowS
$cshowList :: [Settings] -> ShowS
show :: Settings -> String
$cshow :: Settings -> String
showsPrec :: Int -> Settings -> ShowS
$cshowsPrec :: Int -> Settings -> ShowS
Show)
data Tool
= Cabal
| Stack
deriving stock (Int -> Tool -> ShowS
[Tool] -> ShowS
Tool -> String
(Int -> Tool -> ShowS)
-> (Tool -> String) -> ([Tool] -> ShowS) -> Show Tool
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Tool] -> ShowS
$cshowList :: [Tool] -> ShowS
show :: Tool -> String
$cshow :: Tool -> String
showsPrec :: Int -> Tool -> ShowS
$cshowsPrec :: Int -> Tool -> ShowS
Show, Tool -> Tool -> Bool
(Tool -> Tool -> Bool) -> (Tool -> Tool -> Bool) -> Eq Tool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Tool -> Tool -> Bool
$c/= :: Tool -> Tool -> Bool
== :: Tool -> Tool -> Bool
$c== :: Tool -> Tool -> Bool
Eq, Int -> Tool
Tool -> Int
Tool -> [Tool]
Tool -> Tool
Tool -> Tool -> [Tool]
Tool -> Tool -> Tool -> [Tool]
(Tool -> Tool)
-> (Tool -> Tool)
-> (Int -> Tool)
-> (Tool -> Int)
-> (Tool -> [Tool])
-> (Tool -> Tool -> [Tool])
-> (Tool -> Tool -> [Tool])
-> (Tool -> Tool -> Tool -> [Tool])
-> Enum Tool
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: Tool -> Tool -> Tool -> [Tool]
$cenumFromThenTo :: Tool -> Tool -> Tool -> [Tool]
enumFromTo :: Tool -> Tool -> [Tool]
$cenumFromTo :: Tool -> Tool -> [Tool]
enumFromThen :: Tool -> Tool -> [Tool]
$cenumFromThen :: Tool -> Tool -> [Tool]
enumFrom :: Tool -> [Tool]
$cenumFrom :: Tool -> [Tool]
fromEnum :: Tool -> Int
$cfromEnum :: Tool -> Int
toEnum :: Int -> Tool
$ctoEnum :: Int -> Tool
pred :: Tool -> Tool
$cpred :: Tool -> Tool
succ :: Tool -> Tool
$csucc :: Tool -> Tool
Enum, Tool
Tool -> Tool -> Bounded Tool
forall a. a -> a -> Bounded a
maxBound :: Tool
$cmaxBound :: Tool
minBound :: Tool
$cminBound :: Tool
Bounded)
showTool :: Tool -> Text
showTool :: Tool -> Text
showTool = \case
Cabal -> "cabal"
Stack -> "stack"
parseTool :: Text -> Maybe Tool
parseTool :: Text -> Maybe Tool
parseTool = (Tool -> Text) -> Text -> Maybe Tool
forall a k. (Bounded a, Enum a, Ord k) => (a -> k) -> k -> Maybe a
inverseMap Tool -> Text
showTool