Updated to DefaultBuildScriptConfiguratorFactory and related.
This commit is contained in:
parent
cdda27ea3a
commit
d73f2ba521
@ -1,19 +1,16 @@
|
||||
package com.jessebrault.ssg.buildscript
|
||||
|
||||
import com.jessebrault.ssg.html.PageToHtmlTaskFactory
|
||||
import com.jessebrault.ssg.html.TextToHtmlSpec
|
||||
import com.jessebrault.ssg.html.TextToHtmlSpecProviders
|
||||
import com.jessebrault.ssg.html.TextToHtmlTaskFactory
|
||||
import com.jessebrault.ssg.page.PageTypes
|
||||
import com.jessebrault.ssg.page.PagesProviders
|
||||
import com.jessebrault.ssg.part.PartTypes
|
||||
import com.jessebrault.ssg.part.PartsProviders
|
||||
import com.jessebrault.ssg.provider.CollectionProviders
|
||||
import com.jessebrault.ssg.template.TemplateTypes
|
||||
import com.jessebrault.ssg.template.TemplatesProviders
|
||||
import com.jessebrault.ssg.text.TextTypes
|
||||
import com.jessebrault.ssg.text.TextsProviders
|
||||
import com.jessebrault.ssg.util.ExtensionUtil
|
||||
import com.jessebrault.ssg.util.Result
|
||||
import groovy.transform.EqualsAndHashCode
|
||||
import groovy.transform.NullCheck
|
||||
import groovy.transform.TupleConstructor
|
||||
@ -30,7 +27,11 @@ final class DefaultBuildScriptConfiguratorFactory implements BuildScriptConfigur
|
||||
@Override
|
||||
Consumer<BuildScriptBase> get() {
|
||||
return {
|
||||
it.allBuilds {
|
||||
it.build(name: 'default') {
|
||||
outputDirFunction = { Build build ->
|
||||
new OutputDir(new File(this.baseDir, build.name == 'default' ? 'build' : build.name))
|
||||
}
|
||||
|
||||
types {
|
||||
textTypes << TextTypes.MARKDOWN
|
||||
pageTypes << PageTypes.GSP
|
||||
@ -38,50 +39,29 @@ final class DefaultBuildScriptConfiguratorFactory implements BuildScriptConfigur
|
||||
partTypes << PartTypes.GSP
|
||||
}
|
||||
|
||||
providers { types ->
|
||||
texts(TextsProviders.from(new File(this.baseDir, 'texts'), types.textTypes))
|
||||
pages(PagesProviders.from(new File(this.baseDir, 'pages'), types.pageTypes))
|
||||
templates(TemplatesProviders.from(new File(this.baseDir, 'templates'), types.templateTypes))
|
||||
parts(PartsProviders.of(new File(this.baseDir, 'parts'), types.partTypes))
|
||||
sources { base, types ->
|
||||
texts TextsProviders.from(new File(this.baseDir, 'texts'), types.textTypes)
|
||||
pages PagesProviders.from(new File(this.baseDir, 'pages'), types.pageTypes)
|
||||
templates TemplatesProviders.from(new File(this.baseDir, 'templates'), types.templateTypes)
|
||||
parts PartsProviders.from(new File(this.baseDir, 'parts'), types.partTypes)
|
||||
}
|
||||
|
||||
taskFactories { sourceProviders ->
|
||||
taskFactories { base, sources ->
|
||||
register('textToHtml', TextToHtmlTaskFactory::new) {
|
||||
it.specProvider += CollectionProviders.fromSupplier {
|
||||
def templates = sourceProviders.templatesProvider.provide()
|
||||
sourceProviders.textsProvider.provide().collect {
|
||||
def frontMatterResult = it.type.frontMatterGetter.get(it)
|
||||
if (frontMatterResult.hasDiagnostics()) {
|
||||
return Result.ofDiagnostics(frontMatterResult.diagnostics)
|
||||
}
|
||||
def templateValue = frontMatterResult.get().get('template')
|
||||
if (templateValue) {
|
||||
def template = templates.find { it.path == templateValue }
|
||||
return Result.of(new TextToHtmlSpec(
|
||||
it,
|
||||
template,
|
||||
ExtensionUtil.stripExtension(it.path) + '.html'
|
||||
))
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
it.allTextsProvider += sourceProviders.textsProvider
|
||||
it.allPartsProvider += sourceProviders.partsProvider
|
||||
it.specProvider += TextToHtmlSpecProviders.from(sources)
|
||||
it.allTextsProvider += sources.textsProvider
|
||||
it.allPartsProvider += sources.partsProvider
|
||||
it.allModelsProvider += sources.modelsProvider
|
||||
}
|
||||
|
||||
register('pageToHtml', PageToHtmlTaskFactory::new) {
|
||||
it.pagesProvider += sourceProviders.pagesProvider
|
||||
it.allTextsProvider += sourceProviders.textsProvider
|
||||
it.allPartsProvider += sourceProviders.partsProvider
|
||||
it.pagesProvider += sources.pagesProvider
|
||||
it.allTextsProvider += sources.textsProvider
|
||||
it.allPartsProvider += sources.partsProvider
|
||||
it.allModelsProvider += sources.modelsProvider
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
it.build('default') {
|
||||
outputDir = new File(this.baseDir, 'build')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,36 @@
|
||||
package com.jessebrault.ssg.html
|
||||
|
||||
import com.jessebrault.ssg.buildscript.SourceProviders
|
||||
import com.jessebrault.ssg.provider.CollectionProvider
|
||||
import com.jessebrault.ssg.provider.CollectionProviders
|
||||
import com.jessebrault.ssg.util.ExtensionUtil
|
||||
import com.jessebrault.ssg.util.Result
|
||||
|
||||
final class TextToHtmlSpecProviders {
|
||||
|
||||
static CollectionProvider<Result<TextToHtmlSpec>> from(SourceProviders sources) {
|
||||
CollectionProviders.fromSupplier {
|
||||
def templates = sources.templatesProvider.provide()
|
||||
sources.textsProvider.provide().findResults {
|
||||
def frontMatterResult = it.type.frontMatterGetter.get(it)
|
||||
if (frontMatterResult.hasDiagnostics()) {
|
||||
return Result.ofDiagnostics(frontMatterResult.diagnostics) as Result<TextToHtmlSpec>
|
||||
}
|
||||
def templateValue = frontMatterResult.get().get('template')
|
||||
if (templateValue) {
|
||||
def template = templates.find { it.path == templateValue }
|
||||
return Result.of(new TextToHtmlSpec(
|
||||
it,
|
||||
template,
|
||||
ExtensionUtil.stripExtension(it.path) + '.html'
|
||||
))
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private TextToHtmlSpecProviders() {}
|
||||
|
||||
}
|
@ -10,7 +10,7 @@ final class PartsProviders {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(PartsProviders)
|
||||
|
||||
static CollectionProvider<Part> of(File partsDir, Collection<PartType> partTypes) {
|
||||
static CollectionProvider<Part> from(File partsDir, Collection<PartType> partTypes) {
|
||||
CollectionProviders.fromDirectory(partsDir) { file, relativePath ->
|
||||
def extension = ExtensionUtil.getExtension(relativePath)
|
||||
if (extension) {
|
||||
|
@ -17,7 +17,7 @@ final class PartFilePartsProviderTests {
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
this.partsDir = File.createTempDir()
|
||||
partsProvider = PartsProviders.of(this.partsDir, [gspPartType])
|
||||
partsProvider = PartsProviders.from(this.partsDir, [gspPartType])
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
Reference in New Issue
Block a user