All file-based providers implement WithWatchableDir.
This commit is contained in:
parent
3c8ac6a743
commit
baf425739b
@ -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)
|
||||
|
||||
|
@ -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<PartType> partTypes
|
||||
private final File partsDir
|
||||
|
||||
PartFilePartsProvider(Collection<PartType> 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<Part> getParts() {
|
||||
Collection<Part> provide() {
|
||||
if (!partsDir.isDirectory()) {
|
||||
throw new IllegalArgumentException('partsDir must be a directory')
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.jessebrault.ssg.part
|
||||
|
||||
interface PartsProvider {
|
||||
Collection<Part> getParts()
|
||||
import com.jessebrault.ssg.provider.Provider
|
||||
|
||||
interface PartsProvider extends Provider<Collection<Part>> {
|
||||
Collection<PartType> getPartTypes()
|
||||
}
|
@ -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<SpecialPageType> specialPageTypes
|
||||
private final File specialPagesDir
|
||||
|
||||
SpecialPageFileSpecialPagesProvider(Collection<SpecialPageType> 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<SpecialPage> getSpecialPages() {
|
||||
Collection<SpecialPage> provide() {
|
||||
if (!this.specialPagesDir.isDirectory()) {
|
||||
throw new IllegalArgumentException('specialPagesDir must be a directory')
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.jessebrault.ssg.specialpage
|
||||
|
||||
interface SpecialPagesProvider {
|
||||
Collection<SpecialPage> getSpecialPages()
|
||||
import com.jessebrault.ssg.provider.Provider
|
||||
|
||||
interface SpecialPagesProvider extends Provider<Collection<SpecialPage>> {
|
||||
Collection<SpecialPageType> getSpecialPageTypes()
|
||||
}
|
@ -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<TemplateType> templateTypes
|
||||
private final File templatesDir
|
||||
|
||||
TemplateFileTemplatesProvider(Collection<TemplateType> 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<Template> getTemplates() {
|
||||
Collection<Template> provide() {
|
||||
if (!this.templatesDir.isDirectory()) {
|
||||
throw new IllegalArgumentException('templatesDir must be a directory')
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.jessebrault.ssg.template
|
||||
|
||||
interface TemplatesProvider {
|
||||
Collection<Template> getTemplates()
|
||||
import com.jessebrault.ssg.provider.Provider
|
||||
|
||||
interface TemplatesProvider extends Provider<Collection<Template>> {
|
||||
Collection<TemplateType> getTemplateTypes()
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ class PartFilePartsProviderTests {
|
||||
write('Hello <%= name %>!')
|
||||
}
|
||||
|
||||
def r = this.partsProvider.getParts()
|
||||
def r = this.partsProvider.provide()
|
||||
assertEquals(1, r.size())
|
||||
def p0 = r[0]
|
||||
assertEquals('testPart.gsp', p0.path)
|
||||
@ -40,7 +40,7 @@ class PartFilePartsProviderTests {
|
||||
}
|
||||
}
|
||||
|
||||
def r = this.partsProvider.getParts()
|
||||
def r = this.partsProvider.provide()
|
||||
assertEquals(1, r.size())
|
||||
def p0 = r[0]
|
||||
assertEquals('nested/testPart.gsp', p0.path)
|
||||
@ -54,7 +54,7 @@ class PartFilePartsProviderTests {
|
||||
write 'Ignored!'
|
||||
}
|
||||
|
||||
def r = this.partsProvider.getParts()
|
||||
def r = this.partsProvider.provide()
|
||||
assertEquals(0, r.size())
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ class SpecialPageFileSpecialPagesProviderTests {
|
||||
new FileTreeBuilder(this.specialPagesDir)
|
||||
.file('test.gsp', '<%= "Hello, World!" %>')
|
||||
|
||||
def r = this.specialPagesProvider.getSpecialPages()
|
||||
def r = this.specialPagesProvider.provide()
|
||||
assertEquals(1, r.size())
|
||||
def f0 = r[0]
|
||||
assertEquals('test', f0.path)
|
||||
@ -37,7 +37,7 @@ class SpecialPageFileSpecialPagesProviderTests {
|
||||
file('nested.gsp', '<%= "Hello, World!" %>')
|
||||
}
|
||||
|
||||
def r = this.specialPagesProvider.getSpecialPages()
|
||||
def r = this.specialPagesProvider.provide()
|
||||
assertEquals(1, r.size())
|
||||
def f0 = r[0]
|
||||
assertEquals('nested/nested', f0.path)
|
||||
@ -49,7 +49,7 @@ class SpecialPageFileSpecialPagesProviderTests {
|
||||
void ignoresUnsupportedFile() {
|
||||
new FileTreeBuilder(this.specialPagesDir).file('.ignored', 'Ignored!')
|
||||
|
||||
def r = this.specialPagesProvider.getSpecialPages()
|
||||
def r = this.specialPagesProvider.provide()
|
||||
assertEquals(0, r.size())
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ class PageTemplatesProviderTests {
|
||||
void findsTemplate() {
|
||||
new File(this.templatesDir, 'test.gsp').write('<% out << text %>')
|
||||
|
||||
def r = this.templatesProvider.getTemplates()
|
||||
def r = this.templatesProvider.provide()
|
||||
assertEquals(1, r.size())
|
||||
def t0 = r[0]
|
||||
assertEquals('test.gsp', t0.path)
|
||||
@ -38,7 +38,7 @@ class PageTemplatesProviderTests {
|
||||
}
|
||||
}
|
||||
|
||||
def r = this.templatesProvider.getTemplates()
|
||||
def r = this.templatesProvider.provide()
|
||||
assertEquals(1, r.size())
|
||||
def t0 = r[0]
|
||||
assertEquals('nested/nested.gsp', t0.path)
|
||||
@ -52,7 +52,7 @@ class PageTemplatesProviderTests {
|
||||
write('Ignored!')
|
||||
}
|
||||
|
||||
def r = this.templatesProvider.getTemplates()
|
||||
def r = this.templatesProvider.provide()
|
||||
assertEquals(0, r.size())
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user