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