module Summoner.Template
( createProjectTemplate
) where
import Summoner.Settings (Settings (..))
import Summoner.Template.Cabal (cabalFile)
import Summoner.Template.Doc (docFiles)
import Summoner.Template.GitHub (gitHubFiles)
import Summoner.Template.Haskell (haskellFiles)
import Summoner.Template.Stack (stackFiles)
import Summoner.Tree (TreeFs (..), insertTree)
createProjectTemplate :: Settings -> TreeFs
createProjectTemplate :: Settings -> TreeFs
createProjectTemplate settings :: Settings
settings@Settings{..} = FilePath -> [TreeFs] -> TreeFs
Dir
(Text -> FilePath
forall a. ToString a => a -> FilePath
toString Text
settingsRepo)
((TreeFs -> [TreeFs] -> [TreeFs])
-> [TreeFs] -> [TreeFs] -> [TreeFs]
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr TreeFs -> [TreeFs] -> [TreeFs]
insertTree [TreeFs]
generatedFiles [TreeFs]
settingsFiles)
where
generatedFiles :: [TreeFs]
generatedFiles :: [TreeFs]
generatedFiles = [[TreeFs]] -> [TreeFs]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
[ [TreeFs]
cabal
, [TreeFs]
stack
, [TreeFs]
haskell
, [TreeFs]
docs
, [TreeFs]
gitHub
]
cabal, stack :: [TreeFs]
cabal :: [TreeFs]
cabal = [Settings -> TreeFs
cabalFile Settings
settings]
stack :: [TreeFs]
stack = Bool -> [TreeFs] -> [TreeFs]
forall m. Monoid m => Bool -> m -> m
memptyIfFalse Bool
settingsStack ([TreeFs] -> [TreeFs]) -> [TreeFs] -> [TreeFs]
forall a b. (a -> b) -> a -> b
$ Settings -> [TreeFs]
stackFiles Settings
settings
haskell, docs, gitHub :: [TreeFs]
haskell :: [TreeFs]
haskell = Settings -> [TreeFs]
haskellFiles Settings
settings
docs :: [TreeFs]
docs = Settings -> [TreeFs]
docFiles Settings
settings
gitHub :: [TreeFs]
gitHub = Settings -> [TreeFs]
gitHubFiles Settings
settings