From baf425739b53ed8432d95b1c8021984dfd77c72c Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Tue, 10 Jan 2023 12:40:50 -0600 Subject: [PATCH] All file-based providers implement WithWatchableDir. --- .../ssg/SimpleStaticSiteGenerator.groovy | 6 +++--- .../ssg/part/PartFilePartsProvider.groovy | 13 +++++++++---- .../com/jessebrault/ssg/part/PartsProvider.groovy | 5 +++-- .../SpecialPageFileSpecialPagesProvider.groovy | 13 +++++++++---- .../ssg/specialpage/SpecialPagesProvider.groovy | 5 +++-- .../template/TemplateFileTemplatesProvider.groovy | 13 +++++++++---- .../ssg/template/TemplatesProvider.groovy | 5 +++-- .../ssg/part/PartFilePartsProviderTests.groovy | 6 +++--- .../SpecialPageFileSpecialPagesProviderTests.groovy | 6 +++--- .../ssg/template/PageTemplatesProviderTests.groovy | 6 +++--- 10 files changed, 48 insertions(+), 30 deletions(-) diff --git a/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy b/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy index 19ce317..b7e0aab 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy @@ -27,9 +27,9 @@ class SimpleStaticSiteGenerator implements StaticSiteGenerator { // Get all texts, templates, parts, and specialPages def texts = config.textProviders.collectMany { it.provide() } - def templates = config.templatesProviders.collectMany { it.getTemplates() } - def parts = config.partsProviders.collectMany { it.getParts() } - def specialPages = config.specialPagesProviders.collectMany { it.getSpecialPages() } + def templates = config.templatesProviders.collectMany { it.provide() } + def parts = config.partsProviders.collectMany { it.provide() } + def specialPages = config.specialPagesProviders.collectMany { it.provide() } logger.debug('\n\ttexts: {}\n\ttemplates: {}\n\tparts: {}\n\tspecialPages: {}', texts, templates, parts, specialPages) diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/PartFilePartsProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/PartFilePartsProvider.groovy index 323931a..7b28f01 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/PartFilePartsProvider.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/part/PartFilePartsProvider.groovy @@ -1,23 +1,28 @@ package com.jessebrault.ssg.part +import com.jessebrault.ssg.provider.WithWatchableDir import com.jessebrault.ssg.util.FileNameHandler import groovy.io.FileType import groovy.transform.EqualsAndHashCode import groovy.transform.NullCheck -import groovy.transform.TupleConstructor import org.slf4j.Logger import org.slf4j.LoggerFactory -@TupleConstructor(includeFields = true, defaults = false) @NullCheck @EqualsAndHashCode(includeFields = true) -class PartFilePartsProvider implements PartsProvider { +class PartFilePartsProvider implements PartsProvider, WithWatchableDir { private static final Logger logger = LoggerFactory.getLogger(PartFilePartsProvider) private final Collection partTypes private final File partsDir + PartFilePartsProvider(Collection partTypes, File partsDir) { + this.partTypes = partTypes + this.partsDir = partsDir + this.watchableDir = this.partsDir + } + private PartType getPartType(File file) { partTypes.find { it.ids.contains(new FileNameHandler(file).getExtension()) @@ -25,7 +30,7 @@ class PartFilePartsProvider implements PartsProvider { } @Override - Collection getParts() { + Collection provide() { if (!partsDir.isDirectory()) { throw new IllegalArgumentException('partsDir must be a directory') } diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/PartsProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/PartsProvider.groovy index 510316a..01a3886 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/PartsProvider.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/part/PartsProvider.groovy @@ -1,6 +1,7 @@ package com.jessebrault.ssg.part -interface PartsProvider { - Collection getParts() +import com.jessebrault.ssg.provider.Provider + +interface PartsProvider extends Provider> { Collection getPartTypes() } \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProvider.groovy index a322b2d..9df8982 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProvider.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProvider.groovy @@ -1,24 +1,29 @@ package com.jessebrault.ssg.specialpage +import com.jessebrault.ssg.provider.WithWatchableDir import com.jessebrault.ssg.util.FileNameHandler import com.jessebrault.ssg.util.RelativePathHandler import groovy.io.FileType import groovy.transform.EqualsAndHashCode import groovy.transform.NullCheck -import groovy.transform.TupleConstructor import org.slf4j.Logger import org.slf4j.LoggerFactory -@TupleConstructor(includeFields = true, defaults = false) @NullCheck @EqualsAndHashCode(includeFields = true) -class SpecialPageFileSpecialPagesProvider implements SpecialPagesProvider { +class SpecialPageFileSpecialPagesProvider implements SpecialPagesProvider, WithWatchableDir { private static final Logger logger = LoggerFactory.getLogger(SpecialPageFileSpecialPagesProvider) private final Collection specialPageTypes private final File specialPagesDir + SpecialPageFileSpecialPagesProvider(Collection specialPageTypes, File specialPagesDir) { + this.specialPageTypes = specialPageTypes + this.specialPagesDir = specialPagesDir + this.watchableDir = this.specialPagesDir + } + private SpecialPageType getSpecialPageType(File file) { this.specialPageTypes.find { it.ids.contains(new FileNameHandler(file).getExtension()) @@ -26,7 +31,7 @@ class SpecialPageFileSpecialPagesProvider implements SpecialPagesProvider { } @Override - Collection getSpecialPages() { + Collection provide() { if (!this.specialPagesDir.isDirectory()) { throw new IllegalArgumentException('specialPagesDir must be a directory') } diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPagesProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPagesProvider.groovy index 72c08e4..1b06d47 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPagesProvider.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPagesProvider.groovy @@ -1,6 +1,7 @@ package com.jessebrault.ssg.specialpage -interface SpecialPagesProvider { - Collection getSpecialPages() +import com.jessebrault.ssg.provider.Provider + +interface SpecialPagesProvider extends Provider> { Collection getSpecialPageTypes() } \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProvider.groovy index 013f648..b0d318d 100644 --- a/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProvider.groovy +++ b/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProvider.groovy @@ -1,23 +1,28 @@ package com.jessebrault.ssg.template +import com.jessebrault.ssg.provider.WithWatchableDir import com.jessebrault.ssg.util.FileNameHandler import groovy.io.FileType import groovy.transform.EqualsAndHashCode import groovy.transform.NullCheck -import groovy.transform.TupleConstructor import org.slf4j.Logger import org.slf4j.LoggerFactory -@TupleConstructor(includeFields = true, defaults = false) @NullCheck @EqualsAndHashCode(includeFields = true) -class TemplateFileTemplatesProvider implements TemplatesProvider { +class TemplateFileTemplatesProvider implements TemplatesProvider, WithWatchableDir { private static final Logger logger = LoggerFactory.getLogger(TemplateFileTemplatesProvider) private final Collection templateTypes private final File templatesDir + TemplateFileTemplatesProvider(Collection templateTypes, File templatesDir) { + this.templateTypes = templateTypes + this.templatesDir = templatesDir + this.watchableDir = this.templatesDir + } + private TemplateType getType(File file) { this.templateTypes.find { it.ids.contains(new FileNameHandler(file).getExtension()) @@ -25,7 +30,7 @@ class TemplateFileTemplatesProvider implements TemplatesProvider { } @Override - Collection