diff --git a/cli/src/main/groovy/com/jessebrault/ssg/StaticSiteGeneratorCli.groovy b/cli/src/main/groovy/com/jessebrault/ssg/StaticSiteGeneratorCli.groovy index b2ff949..b896ba9 100644 --- a/cli/src/main/groovy/com/jessebrault/ssg/StaticSiteGeneratorCli.groovy +++ b/cli/src/main/groovy/com/jessebrault/ssg/StaticSiteGeneratorCli.groovy @@ -27,21 +27,16 @@ class StaticSiteGeneratorCli { def gspPart = new PartType(['.gsp'], new GspPartRenderer()) def gspSpecialPage = new SpecialPageType(['.gsp'], new GspSpecialPageRenderer()) + def defaultTextsProvider = new TextFileTextsProvider([markdownText], new File('texts')) + def defaultTemplatesProvider = new TemplateFileTemplatesProvider([gspTemplate], new File('templates')) + def defaultPartsProvider = new PartFilePartsProvider([gspPart], new File('parts')) + def defaultSpecialPagesProvider = new SpecialPageFileSpecialPagesProvider([gspSpecialPage], new File('specialPages')) + def config = new Config( - textTypes: [markdownText], - templateTypes: [gspTemplate], - partTypes: [gspPart], - specialPageTypes: [gspSpecialPage], - - textsDir: new File('texts'), - templatesDir: new File('templates'), - partsDir: new File('parts'), - specialPagesDir: new File('specialPages'), - - textsProviderGetter: { Config config -> new TextFileTextsProvider(config.textTypes, config.textsDir) }, - templatesProviderGetter: { Config config -> new TemplateFileTemplatesProvider(config.templateTypes, config.templatesDir) }, - partsProviderGetter: { Config config -> new PartFilePartsProvider(config.partTypes, config.partsDir) }, - specialPagesProviderGetter: { Config config -> new SpecialPageFileSpecialPagesProvider(config.specialPageTypes, config.specialPagesDir) } + textProviders: [defaultTextsProvider], + templatesProviders: [defaultTemplatesProvider], + partsProviders: [defaultPartsProvider], + specialPagesProviders: [defaultSpecialPagesProvider] ) def globals = [:] diff --git a/lib/src/main/groovy/com/jessebrault/ssg/Config.groovy b/lib/src/main/groovy/com/jessebrault/ssg/Config.groovy index 42d588d..c2f9bb0 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/Config.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/Config.groovy @@ -1,35 +1,19 @@ package com.jessebrault.ssg -import com.jessebrault.ssg.part.PartType import com.jessebrault.ssg.part.PartsProvider -import com.jessebrault.ssg.specialpage.SpecialPageType import com.jessebrault.ssg.specialpage.SpecialPagesProvider -import com.jessebrault.ssg.template.TemplateType import com.jessebrault.ssg.template.TemplatesProvider -import com.jessebrault.ssg.text.TextType import com.jessebrault.ssg.text.TextsProvider import groovy.transform.Canonical import groovy.transform.MapConstructor import groovy.transform.NullCheck -import java.util.function.Function - @Canonical @MapConstructor @NullCheck class Config { - Collection textTypes - Collection templateTypes - Collection partTypes - Collection specialPageTypes - - File textsDir - File templatesDir - File partsDir - File specialPagesDir - - Function textsProviderGetter - Function templatesProviderGetter - Function partsProviderGetter - Function specialPagesProviderGetter + Collection textProviders + Collection templatesProviders + Collection partsProviders + Collection specialPagesProviders } diff --git a/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy b/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy index 88900bf..d368345 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy @@ -16,17 +16,9 @@ class SimpleStaticSiteGenerator implements StaticSiteGenerator { private static final Marker exit = MarkerFactory.getMarker('EXIT') private final Config config - private final TextsProvider textsProvider - private final TemplatesProvider templatesProvider - private final PartsProvider partsProvider - private final SpecialPagesProvider specialPagesProvider SimpleStaticSiteGenerator(Config config) { this.config = config - this.textsProvider = config.textsProviderGetter.apply(config) - this.templatesProvider = config.templatesProviderGetter.apply(config) - this.partsProvider = config.partsProviderGetter.apply(config) - this.specialPagesProvider = config.specialPagesProviderGetter.apply(config) } @Override @@ -34,10 +26,10 @@ class SimpleStaticSiteGenerator implements StaticSiteGenerator { logger.trace(enter, 'buildDir: {}', buildDir) // Get all texts, templates, parts, and specialPages - def texts = this.textsProvider.getTextFiles() - def templates = this.templatesProvider.getTemplates() - def parts = this.partsProvider.getParts() - def specialPages = this.specialPagesProvider.getSpecialPages() + def texts = this.config.textProviders.collectMany { it.getTextFiles() } + def templates = this.config.templatesProviders.collectMany { it.getTemplates() } + def parts = this.config.partsProviders.collectMany { it.getParts() } + def specialPages = this.config.specialPagesProviders.collectMany { it.getSpecialPages() } logger.debug('\n\ttexts: {}\n\ttemplates: {}\n\tparts: {}\n\tspecialPages: {}', texts, templates, parts, specialPages) diff --git a/lib/src/test/groovy/com/jessebrault/ssg/StaticSiteGeneratorTests.groovy b/lib/src/test/groovy/com/jessebrault/ssg/StaticSiteGeneratorTests.groovy index 491c7a4..4f1c18d 100644 --- a/lib/src/test/groovy/com/jessebrault/ssg/StaticSiteGeneratorTests.groovy +++ b/lib/src/test/groovy/com/jessebrault/ssg/StaticSiteGeneratorTests.groovy @@ -35,21 +35,21 @@ class StaticSiteGeneratorTests { this.partsDir = File.createTempDir() this.specialPagesDir = File.createTempDir() + def markdownTextType = new TextType(['.md'], new MarkdownTextRenderer(), new MarkdownFrontMatterGetter()) + def gspTemplateType = new TemplateType(['.gsp'], new GspTemplateRenderer()) + def gspPartType = new PartType(['.gsp'], new GspPartRenderer()) + def gspSpecialPageType = new SpecialPageType(['.gsp'], new GspSpecialPageRenderer()) + + def textsProvider = new TextFileTextsProvider([markdownTextType], this.textsDir) + def templatesProvider = new TemplateFileTemplatesProvider([gspTemplateType], this.templatesDir) + def partsProvider = new PartFilePartsProvider([gspPartType], this.partsDir) + def specialPagesProvider = new SpecialPageFileSpecialPagesProvider([gspSpecialPageType], this.specialPagesDir) + def config = new Config( - textTypes: [new TextType(['.md'], new MarkdownTextRenderer(), new MarkdownFrontMatterGetter())], - templateTypes: [new TemplateType(['.gsp'], new GspTemplateRenderer())], - partTypes: [new PartType(['.gsp'], new GspPartRenderer())], - specialPageTypes: [new SpecialPageType(['.gsp'], new GspSpecialPageRenderer())], - - textsDir: this.textsDir, - templatesDir: this.templatesDir, - partsDir: this.partsDir, - specialPagesDir: this.specialPagesDir, - - textsProviderGetter: { Config config -> new TextFileTextsProvider(config.textTypes, config.textsDir) }, - templatesProviderGetter: { Config config -> new TemplateFileTemplatesProvider(config.templateTypes, config.templatesDir) }, - partsProviderGetter: { Config config -> new PartFilePartsProvider(config.partTypes, config.partsDir) }, - specialPagesProviderGetter: { Config config -> new SpecialPageFileSpecialPagesProvider(config.specialPageTypes, config.specialPagesDir) } + textProviders: [textsProvider], + templatesProviders: [templatesProvider], + partsProviders: [partsProvider], + specialPagesProviders: [specialPagesProvider] ) this.ssg = new SimpleStaticSiteGenerator(config) }