From fdc2c83e998623914a59855f9b457bb7c657d61a Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Wed, 26 Apr 2023 15:29:42 +0200 Subject: [PATCH] Removed lib module. --- lib/build.gradle | 22 -- .../groovy/com/jessebrault/ssg/Build.groovy | 24 -- .../groovy/com/jessebrault/ssg/Config.groovy | 44 ---- .../com/jessebrault/ssg/Diagnostic.groovy | 18 -- .../groovy/com/jessebrault/ssg/Result.groovy | 28 -- .../ssg/SimpleStaticSiteGenerator.groovy | 53 ---- .../com/jessebrault/ssg/SiteSpec.groovy | 27 -- .../ssg/StaticSiteGenerator.groovy | 9 - .../jessebrault/ssg/WatchableProvider.groovy | 5 - .../buildscript/BuildClosureDelegate.groovy | 42 --- .../ssg/buildscript/BuildScriptBase.groovy | 42 --- .../ssg/buildscript/BuildScriptRunner.groovy | 8 - .../buildscript/ConfigClosureDelegate.groovy | 43 ---- .../buildscript/GlobalsClosureDelegate.groovy | 20 -- .../GroovyBuildScriptRunner.groovy | 37 --- .../SiteSpecClosureDelegate.groovy | 14 - .../jessebrault/ssg/dsl/StandardDslMap.groovy | 84 ------ .../ssg/part/EmbeddablePart.groovy | 54 ---- .../ssg/part/EmbeddablePartsMap.groovy | 35 --- .../ssg/part/GspPartRenderer.groovy | 56 ---- .../com/jessebrault/ssg/part/Part.groovy | 21 -- .../ssg/part/PartFilePartsProvider.groovy | 48 ---- .../jessebrault/ssg/part/PartRenderer.groovy | 17 -- .../com/jessebrault/ssg/part/PartType.groovy | 20 -- .../jessebrault/ssg/part/PartsProvider.groovy | 7 - .../AbstractFileCollectionProvider.groovy | 40 --- .../jessebrault/ssg/provider/Provider.groovy | 5 - .../ssg/provider/WithWatchableDir.groovy | 5 - .../ssg/renderer/RenderContext.groovy | 26 -- .../specialpage/GspSpecialPageRenderer.groovy | 46 ---- .../ssg/specialpage/SpecialPage.groovy | 21 -- ...SpecialPageFileSpecialPagesProvider.groovy | 50 ---- .../specialpage/SpecialPageRenderer.groovy | 16 -- .../ssg/specialpage/SpecialPageType.groovy | 20 -- .../specialpage/SpecialPagesProvider.groovy | 7 - .../ssg/tagbuilder/DynamicTagBuilder.groovy | 77 ------ .../ssg/tagbuilder/TagBuilder.groovy | 8 - .../jessebrault/ssg/task/AbstractTask.groovy | 31 --- .../com/jessebrault/ssg/task/FileInput.groovy | 5 - .../jessebrault/ssg/task/FileOutput.groovy | 6 - .../ssg/task/HtmlFileOutput.groovy | 26 -- .../com/jessebrault/ssg/task/Input.groovy | 5 - .../com/jessebrault/ssg/task/Output.groovy | 5 - .../ssg/task/SpecialPageToHtmlFileTask.groovy | 51 ---- .../SpecialPageToHtmlFileTaskFactory.groovy | 87 ------- .../com/jessebrault/ssg/task/Task.groovy | 7 - .../ssg/task/TaskCollection.groovy | 24 -- .../jessebrault/ssg/task/TaskContainer.groovy | 9 - .../jessebrault/ssg/task/TaskExecutor.groovy | 5 - .../ssg/task/TaskExecutorContext.groovy | 23 -- .../jessebrault/ssg/task/TaskFactory.groovy | 9 - .../ssg/task/TaskFactoryManager.groovy | 27 -- .../com/jessebrault/ssg/task/TaskType.groovy | 20 -- .../ssg/task/TaskTypeContainer.groovy | 31 --- .../com/jessebrault/ssg/task/TextInput.groovy | 14 - .../ssg/task/TextToHtmlFileTask.groovy | 51 ---- .../ssg/task/TextToHtmlFileTaskFactory.groovy | 117 --------- .../com/jessebrault/ssg/task/WithInput.groovy | 5 - .../jessebrault/ssg/task/WithOutput.groovy | 5 - .../ssg/template/GspTemplateRenderer.groovy | 49 ---- .../jessebrault/ssg/template/Template.groovy | 21 -- .../TemplateFileTemplatesProvider.groovy | 48 ---- .../ssg/template/TemplateRenderer.groovy | 15 -- .../ssg/template/TemplateType.groovy | 20 -- .../ssg/template/TemplatesProvider.groovy | 7 - .../ssg/text/EmbeddableText.groovy | 59 ----- .../ssg/text/EmbeddableTextsCollection.groovy | 24 -- .../jessebrault/ssg/text/ExcerptGetter.groovy | 7 - .../jessebrault/ssg/text/FrontMatter.groovy | 54 ---- .../ssg/text/FrontMatterGetter.groovy | 7 - .../ssg/text/MarkdownExcerptGetter.groovy | 54 ---- .../ssg/text/MarkdownFrontMatterGetter.groovy | 35 --- .../ssg/text/MarkdownTextRenderer.groovy | 33 --- .../com/jessebrault/ssg/text/Text.groovy | 21 -- .../ssg/text/TextFileTextsProvider.groovy | 48 ---- .../jessebrault/ssg/text/TextRenderer.groovy | 7 - .../com/jessebrault/ssg/text/TextType.groovy | 22 -- .../jessebrault/ssg/text/TextsProvider.groovy | 7 - .../ssg/url/PathBasedUrlBuilder.groovy | 37 --- .../com/jessebrault/ssg/url/UrlBuilder.groovy | 7 - .../ssg/util/ExtensionsUtil.groovy | 24 -- ...StaticSiteGeneratorIntegrationTests.groovy | 156 ------------ .../ssg/part/GspPartRendererTests.groovy | 110 -------- .../part/PartFilePartsProviderTests.groovy | 62 ----- .../GspSpecialPageRendererTests.groovy | 22 -- ...alPageFileSpecialPagesProviderTests.groovy | 57 ----- .../ssg/tagbuilder/TagBuilderTests.groovy | 54 ---- .../template/GspTemplateRendererTests.groovy | 47 ---- .../TemplateFileTemplatesProviderTests.groovy | 60 ----- .../ssg/text/ExcerptGetterTests.groovy | 44 ---- .../text/TextFileTextsProviderTests.groovy | 61 ----- .../ssg/url/PathBasedUrlBuilderTests.groovy | 10 - .../ssg/util/ExtensionsUtilTests.groovy | 49 ---- lib/src/test/resources/log4j2.xml | 17 -- .../ssg/dsl/DslScriptletProvider.groovy | 28 -- .../ssg/dsl/StandardDslConsumerTests.groovy | 240 ------------------ .../ssg/specialpage/SpecialPageMocks.groovy | 16 -- .../SpecialPageToHtmlFileTaskMocks.groovy | 19 -- .../ssg/task/TextToHtmlFileTaskMocks.groovy | 19 -- .../ssg/testutil/DiagnosticsUtil.groovy | 47 ---- .../ssg/testutil/RenderContextUtil.groovy | 26 -- .../com/jessebrault/ssg/text/TextMocks.groovy | 39 --- .../ssg/url/AbstractUrlBuilderTests.groovy | 49 ---- settings.gradle | 2 +- 104 files changed, 1 insertion(+), 3501 deletions(-) delete mode 100644 lib/build.gradle delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/Build.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/Config.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/Diagnostic.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/Result.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/SiteSpec.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/StaticSiteGenerator.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/WatchableProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildClosureDelegate.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptBase.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptRunner.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/buildscript/ConfigClosureDelegate.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/buildscript/GlobalsClosureDelegate.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/buildscript/GroovyBuildScriptRunner.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/buildscript/SiteSpecClosureDelegate.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/dsl/StandardDslMap.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePart.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePartsMap.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/part/GspPartRenderer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/part/Part.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/part/PartFilePartsProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/part/PartRenderer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/part/PartType.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/part/PartsProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/provider/AbstractFileCollectionProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/provider/Provider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/provider/WithWatchableDir.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/renderer/RenderContext.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPage.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageRenderer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageType.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPagesProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/tagbuilder/DynamicTagBuilder.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/tagbuilder/TagBuilder.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/AbstractTask.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/FileInput.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/FileOutput.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/HtmlFileOutput.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/Input.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/Output.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTask.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTaskFactory.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/Task.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TaskCollection.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TaskContainer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TaskExecutor.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TaskExecutorContext.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TaskFactory.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TaskFactoryManager.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TaskType.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TaskTypeContainer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TextInput.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TextToHtmlFileTask.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/TextToHtmlFileTaskFactory.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/WithInput.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/task/WithOutput.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/template/Template.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/template/TemplateRenderer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/template/TemplateType.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/template/TemplatesProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableText.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/EmbeddableTextsCollection.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/ExcerptGetter.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/FrontMatter.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/FrontMatterGetter.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/MarkdownExcerptGetter.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/MarkdownFrontMatterGetter.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/MarkdownTextRenderer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/Text.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/TextFileTextsProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/TextRenderer.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/TextType.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/text/TextsProvider.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/url/PathBasedUrlBuilder.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/url/UrlBuilder.groovy delete mode 100644 lib/src/main/groovy/com/jessebrault/ssg/util/ExtensionsUtil.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/SimpleStaticSiteGeneratorIntegrationTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/part/GspPartRendererTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/part/PartFilePartsProviderTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRendererTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProviderTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/tagbuilder/TagBuilderTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/template/GspTemplateRendererTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProviderTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/text/ExcerptGetterTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/text/TextFileTextsProviderTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/url/PathBasedUrlBuilderTests.groovy delete mode 100644 lib/src/test/groovy/com/jessebrault/ssg/util/ExtensionsUtilTests.groovy delete mode 100644 lib/src/test/resources/log4j2.xml delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/dsl/DslScriptletProvider.groovy delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/dsl/StandardDslConsumerTests.groovy delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/specialpage/SpecialPageMocks.groovy delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTaskMocks.groovy delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/task/TextToHtmlFileTaskMocks.groovy delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/testutil/DiagnosticsUtil.groovy delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/testutil/RenderContextUtil.groovy delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/text/TextMocks.groovy delete mode 100644 lib/src/testFixtures/groovy/com/jessebrault/ssg/url/AbstractUrlBuilderTests.groovy diff --git a/lib/build.gradle b/lib/build.gradle deleted file mode 100644 index 53cb59f..0000000 --- a/lib/build.gradle +++ /dev/null @@ -1,22 +0,0 @@ -plugins { - id 'ssg.common' -} - -repositories { - mavenCentral() -} - -dependencies { - // https://mvnrepository.com/artifact/org.apache.groovy/groovy-templates - implementation 'org.apache.groovy:groovy-templates:4.0.9' - - // https://mvnrepository.com/artifact/org.commonmark/commonmark - implementation 'org.commonmark:commonmark:0.21.0' - - // https://mvnrepository.com/artifact/org.commonmark/commonmark-ext-yaml-front-matter - implementation 'org.commonmark:commonmark-ext-yaml-front-matter:0.21.0' -} - -jar { - archivesBaseName = 'ssg-lib' -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/Build.groovy b/lib/src/main/groovy/com/jessebrault/ssg/Build.groovy deleted file mode 100644 index d53e40c..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/Build.groovy +++ /dev/null @@ -1,24 +0,0 @@ -package com.jessebrault.ssg - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck(includeGenerated = true) -@EqualsAndHashCode -class Build { - - String name - Config config - SiteSpec siteSpec - Map globals - File outDir - - @Override - String toString() { - "Build(name: ${ this.name }, config: ${ this.config }, siteSpec: ${ this.siteSpec }, " + - "globals: ${ this.globals }, outDir: ${ this.outDir })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/Config.groovy b/lib/src/main/groovy/com/jessebrault/ssg/Config.groovy deleted file mode 100644 index f6c01c7..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/Config.groovy +++ /dev/null @@ -1,44 +0,0 @@ -package com.jessebrault.ssg - -import com.jessebrault.ssg.part.PartsProvider -import com.jessebrault.ssg.specialpage.SpecialPagesProvider -import com.jessebrault.ssg.template.TemplatesProvider -import com.jessebrault.ssg.text.TextsProvider -import groovy.transform.Canonical -import groovy.transform.EqualsAndHashCode -import groovy.transform.MapConstructor -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(force = true) -@MapConstructor -@NullCheck -@EqualsAndHashCode -class Config { - - Collection textProviders - Collection templatesProviders - Collection partsProviders - Collection specialPagesProviders - - Config(Config source) { - this.textProviders = [].tap { - addAll(source.textProviders) - } - this.templatesProviders = [].tap { - addAll(source.templatesProviders) - } - this.partsProviders = [].tap { - addAll(source.partsProviders) - } - this.specialPagesProviders = [].tap { - addAll(source.specialPagesProviders) - } - } - - String toString() { - "Config(textProviders: ${ this.textProviders }, templatesProviders: ${ this.templatesProviders }, " + - "partsProviders: ${ this.partsProviders }, specialPagesProviders: ${ this.specialPagesProviders })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/Diagnostic.groovy b/lib/src/main/groovy/com/jessebrault/ssg/Diagnostic.groovy deleted file mode 100644 index 466fa1d..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/Diagnostic.groovy +++ /dev/null @@ -1,18 +0,0 @@ -package com.jessebrault.ssg - -import groovy.transform.EqualsAndHashCode -import groovy.transform.TupleConstructor - -@TupleConstructor -@EqualsAndHashCode -class Diagnostic { - - String message - Exception exception - - @Override - String toString() { - "Diagnostic(message: ${ this.message }, exception: ${ this.exception })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/Result.groovy b/lib/src/main/groovy/com/jessebrault/ssg/Result.groovy deleted file mode 100644 index 94702bd..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/Result.groovy +++ /dev/null @@ -1,28 +0,0 @@ -package com.jessebrault.ssg - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false, includeFields = true) -@NullCheck(includeGenerated = true) -@EqualsAndHashCode -final class Result { - - final Collection diagnostics - private final T t - - boolean hasDiagnostics() { - !this.diagnostics.isEmpty() - } - - T get() { - this.t - } - - @Override - String toString() { - "Result(diagnostics: ${ this.diagnostics }, t: ${ this.t })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy b/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy deleted file mode 100644 index 0219f67..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/SimpleStaticSiteGenerator.groovy +++ /dev/null @@ -1,53 +0,0 @@ -package com.jessebrault.ssg - -import com.jessebrault.ssg.task.SpecialPageToHtmlFileTaskFactory -import com.jessebrault.ssg.task.TaskContainer -import com.jessebrault.ssg.task.TaskTypeContainer -import com.jessebrault.ssg.task.TextToHtmlFileTaskFactory -import groovy.transform.NullCheck -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import org.slf4j.Marker -import org.slf4j.MarkerFactory - -@NullCheck -class SimpleStaticSiteGenerator implements StaticSiteGenerator { - - private static final Logger logger = LoggerFactory.getLogger(SimpleStaticSiteGenerator) - private static final Marker enter = MarkerFactory.getMarker('ENTER') - private static final Marker exit = MarkerFactory.getMarker('EXIT') - - private static final TextToHtmlFileTaskFactory textHtmlFactory = new TextToHtmlFileTaskFactory() - private static final SpecialPageToHtmlFileTaskFactory specialPageHtmlFactory = new SpecialPageToHtmlFileTaskFactory() - - @Override - TaskTypeContainer getTaskTypes() { - new TaskTypeContainer([textHtmlFactory.taskType, specialPageHtmlFactory.taskType]) - } - - @Override - Result generate(Build build) { - logger.trace(enter, 'build: {}', build) - logger.info('processing build with name: {}', build.name) - - def tasks = new TaskContainer() - def diagnostics = [] - - def textsResult = textHtmlFactory.getTasks(build) - tasks.addAll(textsResult.get()) - diagnostics.addAll(textsResult.diagnostics) - - def specialPagesResult = specialPageHtmlFactory.getTasks(build) - tasks.addAll(specialPagesResult.get()) - diagnostics.addAll(specialPagesResult.diagnostics) - - logger.trace(exit, '\n\tdiagnostics: {}\n\ttasks: {}', diagnostics, tasks) - new Result<>(diagnostics, tasks) - } - - @Override - String toString() { - "SimpleStaticSiteGenerator()" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/SiteSpec.groovy b/lib/src/main/groovy/com/jessebrault/ssg/SiteSpec.groovy deleted file mode 100644 index 37a8835..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/SiteSpec.groovy +++ /dev/null @@ -1,27 +0,0 @@ -package com.jessebrault.ssg - -import groovy.transform.EqualsAndHashCode -import groovy.transform.MapConstructor -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(force = true, defaults = false) -@MapConstructor -@NullCheck -@EqualsAndHashCode -final class SiteSpec { - - String name - String baseUrl - - SiteSpec(SiteSpec source) { - this.name = source.name - this.baseUrl = source.baseUrl - } - - @Override - String toString() { - "SiteSpec(${ this.name }, ${ this.baseUrl })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/StaticSiteGenerator.groovy b/lib/src/main/groovy/com/jessebrault/ssg/StaticSiteGenerator.groovy deleted file mode 100644 index fe72287..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/StaticSiteGenerator.groovy +++ /dev/null @@ -1,9 +0,0 @@ -package com.jessebrault.ssg - -import com.jessebrault.ssg.task.TaskContainer -import com.jessebrault.ssg.task.TaskTypeContainer - -interface StaticSiteGenerator { - TaskTypeContainer getTaskTypes() - Result generate(Build build) -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/WatchableProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/WatchableProvider.groovy deleted file mode 100644 index 428f8ca..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/WatchableProvider.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg - -trait WatchableProvider { - File watchableDir -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildClosureDelegate.groovy b/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildClosureDelegate.groovy deleted file mode 100644 index cc24ef2..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildClosureDelegate.groovy +++ /dev/null @@ -1,42 +0,0 @@ -package com.jessebrault.ssg.buildscript - -import com.jessebrault.ssg.Config -import com.jessebrault.ssg.SiteSpec - -class BuildClosureDelegate { - - String name - Config config - SiteSpec siteSpec - Map globals - File outDir - - void config( - @DelegatesTo(value = ConfigClosureDelegate, strategy = Closure.DELEGATE_FIRST) - Closure configClosure - ) { - configClosure.setDelegate(new ConfigClosureDelegate(this.config)) - configClosure.setResolveStrategy(Closure.DELEGATE_FIRST) - configClosure.run() - } - - void siteSpec( - @DelegatesTo(value = SiteSpecClosureDelegate, strategy = Closure.DELEGATE_FIRST) - Closure siteSpecClosure - ) { - siteSpecClosure.setDelegate(new SiteSpecClosureDelegate(this.siteSpec)) - siteSpecClosure.setResolveStrategy(Closure.DELEGATE_FIRST) - siteSpecClosure.run() - } - - void globals( - @DelegatesTo(value = GlobalsClosureDelegate, strategy = Closure.DELEGATE_FIRST) - Closure globalsClosure - ) { - def globalsConfigurator = new GlobalsClosureDelegate(this.globals) - globalsClosure.setDelegate(globalsConfigurator) - globalsClosure.setResolveStrategy(Closure.DELEGATE_FIRST) - globalsClosure.run() - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptBase.groovy b/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptBase.groovy deleted file mode 100644 index 3c9a84d..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptBase.groovy +++ /dev/null @@ -1,42 +0,0 @@ -package com.jessebrault.ssg.buildscript - -import com.jessebrault.ssg.Build -import com.jessebrault.ssg.Config -import com.jessebrault.ssg.SiteSpec - -abstract class BuildScriptBase extends Script { - - Config defaultConfig - SiteSpec defaultSiteSpec - Map defaultGlobals - - Collection builds = [] - - protected int currentBuildNumber = 0 - - void build( - @DelegatesTo(value = BuildClosureDelegate, strategy = Closure.DELEGATE_FIRST) - Closure buildClosure - ) { - def buildClosureDelegate = new BuildClosureDelegate().tap { - // Default values for Build properties - name = 'build' + this.currentBuildNumber - config = new Config(defaultConfig) - siteSpec = new SiteSpec(defaultSiteSpec) - globals = new LinkedHashMap(defaultGlobals) - outDir = new File(name) - } - buildClosure.setDelegate(buildClosureDelegate) - buildClosure.setResolveStrategy(Closure.DELEGATE_FIRST) - buildClosure.run() - this.builds << new Build( - buildClosureDelegate.name, - buildClosureDelegate.config, - buildClosureDelegate.siteSpec, - buildClosureDelegate.globals, - buildClosureDelegate.outDir - ) - this.currentBuildNumber++ - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptRunner.groovy b/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptRunner.groovy deleted file mode 100644 index 2e85924..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/BuildScriptRunner.groovy +++ /dev/null @@ -1,8 +0,0 @@ -package com.jessebrault.ssg.buildscript - -import com.jessebrault.ssg.Build -import com.jessebrault.ssg.Config - -interface BuildScriptRunner { - Collection runBuildScript(String relativePath, Config defaultConfig, Map defaultGlobals) -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/ConfigClosureDelegate.groovy b/lib/src/main/groovy/com/jessebrault/ssg/buildscript/ConfigClosureDelegate.groovy deleted file mode 100644 index a9f5b64..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/ConfigClosureDelegate.groovy +++ /dev/null @@ -1,43 +0,0 @@ -package com.jessebrault.ssg.buildscript - -import com.jessebrault.ssg.Config -import com.jessebrault.ssg.part.PartType -import com.jessebrault.ssg.specialpage.SpecialPageType -import com.jessebrault.ssg.template.TemplateType -import com.jessebrault.ssg.text.TextType - -class ConfigClosureDelegate { - - @Delegate - private final Config config - - private final Collection defaultTextTypes - private final Collection defaultTemplateTypes - private final Collection defaultPartTypes - private final Collection defaultSpecialPageTypes - - ConfigClosureDelegate(Config config) { - this.config = config - this.defaultTextTypes = this.config.textProviders.collectMany { it.textTypes } - this.defaultTemplateTypes = this.config.templatesProviders.collectMany { it.templateTypes } - this.defaultPartTypes = this.config.partsProviders.collectMany { it.partTypes } - this.defaultSpecialPageTypes = this.config.specialPagesProviders.collectMany { it.specialPageTypes } - } - - Collection getDefaultTextTypes() { - this.defaultTextTypes - } - - Collection getDefaultTemplateTypes() { - this.defaultTemplateTypes - } - - Collection getDefaultPartTypes() { - this.defaultPartTypes - } - - Collection getDefaultSpecialPageTypes() { - this.defaultSpecialPageTypes - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/GlobalsClosureDelegate.groovy b/lib/src/main/groovy/com/jessebrault/ssg/buildscript/GlobalsClosureDelegate.groovy deleted file mode 100644 index 91fd452..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/GlobalsClosureDelegate.groovy +++ /dev/null @@ -1,20 +0,0 @@ -package com.jessebrault.ssg.buildscript - -import groovy.transform.TupleConstructor - -@TupleConstructor(includeFields = true, defaults = false) - class GlobalsClosureDelegate { - - private final Map globals - - @Override - Object getProperty(String propertyName) { - this.globals[propertyName] - } - - @Override - void setProperty(String propertyName, Object newValue) { - this.globals.put(propertyName, newValue) - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/GroovyBuildScriptRunner.groovy b/lib/src/main/groovy/com/jessebrault/ssg/buildscript/GroovyBuildScriptRunner.groovy deleted file mode 100644 index 4facf3e..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/GroovyBuildScriptRunner.groovy +++ /dev/null @@ -1,37 +0,0 @@ -package com.jessebrault.ssg.buildscript - -import com.jessebrault.ssg.Build -import com.jessebrault.ssg.Config -import groovy.transform.NullCheck -import org.codehaus.groovy.control.CompilerConfiguration -import org.codehaus.groovy.control.customizers.ImportCustomizer - -@NullCheck -class GroovyBuildScriptRunner implements BuildScriptRunner { - - @Override - Collection runBuildScript(String relativePath, Config defaultConfig, Map defaultGlobals) { - def engine = new GroovyScriptEngine([new File('.').toURI().toURL()] as URL[]) - engine.config = new CompilerConfiguration().tap { - addCompilationCustomizers(new ImportCustomizer().tap { - addStarImports( - 'com.jessebrault.ssg', - 'com.jessebrault.ssg.part', - 'com.jessebrault.ssg.specialpage', - 'com.jessebrault.ssg.template', - 'com.jessebrault.ssg.text', - 'com.jessebrault.ssg.util' - ) - }) - scriptBaseClass = 'com.jessebrault.ssg.buildscript.BuildScriptBase' - } - - def buildScript = engine.createScript(relativePath, new Binding()) - assert buildScript instanceof BuildScriptBase - buildScript.defaultConfig = defaultConfig - buildScript.defaultGlobals = defaultGlobals - buildScript.run() - buildScript.builds - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/SiteSpecClosureDelegate.groovy b/lib/src/main/groovy/com/jessebrault/ssg/buildscript/SiteSpecClosureDelegate.groovy deleted file mode 100644 index 14a4e71..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/buildscript/SiteSpecClosureDelegate.groovy +++ /dev/null @@ -1,14 +0,0 @@ -package com.jessebrault.ssg.buildscript - -import com.jessebrault.ssg.SiteSpec - -class SiteSpecClosureDelegate { - - @Delegate - private final SiteSpec siteSpec - - SiteSpecClosureDelegate(SiteSpec siteSpec) { - this.siteSpec = siteSpec - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/dsl/StandardDslMap.groovy b/lib/src/main/groovy/com/jessebrault/ssg/dsl/StandardDslMap.groovy deleted file mode 100644 index c57760e..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/dsl/StandardDslMap.groovy +++ /dev/null @@ -1,84 +0,0 @@ -package com.jessebrault.ssg.dsl - -import com.jessebrault.ssg.part.EmbeddablePartsMap -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.tagbuilder.DynamicTagBuilder -import com.jessebrault.ssg.text.EmbeddableText -import com.jessebrault.ssg.text.EmbeddableTextsCollection -import com.jessebrault.ssg.text.Text -import com.jessebrault.ssg.url.PathBasedUrlBuilder -import groovy.transform.NullCheck -import groovy.transform.stc.ClosureParams -import groovy.transform.stc.SimpleType -import org.slf4j.LoggerFactory - -final class StandardDslMap { - - @NullCheck(includeGenerated = true) - static final class Builder { - - private final Map custom = [:] - - String loggerName = '' - Closure onDiagnostics = { } - Text text = null - - void putCustom(key, value) { - this.custom.put(key, value) - } - - void putAllCustom(Map m) { - this.custom.putAll(m) - } - - } - - static Map get( - RenderContext context, - @DelegatesTo(value = Builder, strategy = Closure.DELEGATE_FIRST) - @ClosureParams( - value = SimpleType, - options = ['com.jessebrault.ssg.dsl.StandardDslMap.Builder'] - ) - Closure builderClosure - ) { - def b = new Builder() - builderClosure.resolveStrategy = Closure.DELEGATE_FIRST - builderClosure.delegate = b - builderClosure(b) - - [:].tap { - it.globals = context.globals - it.logger = LoggerFactory.getLogger(b.loggerName) - it.parts = new EmbeddablePartsMap( - context.parts, - context, - b.onDiagnostics, - b.text - ) - it.siteSpec = context.siteSpec - it.sourcePath = context.sourcePath - it.tagBuilder = new DynamicTagBuilder() - it.targetPath = context.targetPath - it.tasks = context.tasks - it.taskTypes = context.taskTypes - it.text = b.text ? new EmbeddableText( - b.text, - context.globals, - b.onDiagnostics - ) : null - it.texts = new EmbeddableTextsCollection( - context.texts, - context.globals, - b.onDiagnostics - ) - it.urlBuilder = new PathBasedUrlBuilder( - context.targetPath, - context.siteSpec.baseUrl - ) - - it.putAll(b.custom) - } - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePart.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePart.groovy deleted file mode 100644 index 82ede31..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePart.groovy +++ /dev/null @@ -1,54 +0,0 @@ -package com.jessebrault.ssg.part - - -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.text.Text -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import org.jetbrains.annotations.Nullable - -import static java.util.Objects.requireNonNull - -@EqualsAndHashCode(includeFields = true) -class EmbeddablePart { - - private final Part part - private final RenderContext context - private final Closure onDiagnostics - - @Nullable - private final Text text - - EmbeddablePart( - Part part, - RenderContext context, - Closure onDiagnostics, - @Nullable Text text - ) { - this.part = requireNonNull(part) - this.context = requireNonNull(context) - this.onDiagnostics = requireNonNull(onDiagnostics) - this.text = text - } - - String render(Map binding = [:]) { - def result = part.type.renderer.render( - this.part, - binding, - this.context, - this.text - ) - if (result.v1.size() > 0) { - this.onDiagnostics.call(result.v1) - '' - } else { - result.v2 - } - } - - @Override - String toString() { - "EmbeddablePart(part: ${ this.part })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePartsMap.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePartsMap.groovy deleted file mode 100644 index 26fe807..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/EmbeddablePartsMap.groovy +++ /dev/null @@ -1,35 +0,0 @@ -package com.jessebrault.ssg.part - -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.text.Text -import groovy.transform.EqualsAndHashCode -import org.jetbrains.annotations.Nullable - -import static java.util.Objects.requireNonNull - -@EqualsAndHashCode(includeFields = true) -class EmbeddablePartsMap { - - @Delegate - private final Map partsMap = [:] - - EmbeddablePartsMap( - Collection parts, - RenderContext context, - Closure onDiagnostics, - @Nullable Text text = null - ) { - requireNonNull(parts) - requireNonNull(context) - requireNonNull(onDiagnostics) - parts.each { - this.put(it.path, new EmbeddablePart(it, context, onDiagnostics, text)) - } - } - - @Override - String toString() { - "EmbeddablePartsMap(partsMap: ${ this.partsMap })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/GspPartRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/GspPartRenderer.groovy deleted file mode 100644 index d4360c8..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/GspPartRenderer.groovy +++ /dev/null @@ -1,56 +0,0 @@ -package com.jessebrault.ssg.part - -import com.jessebrault.ssg.Diagnostic -import com.jessebrault.ssg.dsl.StandardDslMap -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.text.EmbeddableText -import com.jessebrault.ssg.text.Text -import groovy.text.GStringTemplateEngine -import groovy.text.TemplateEngine -import groovy.transform.EqualsAndHashCode -import org.jetbrains.annotations.Nullable - -@EqualsAndHashCode -class GspPartRenderer implements PartRenderer { - - private static final TemplateEngine engine = new GStringTemplateEngine() - - @Override - Tuple2, String> render( - Part part, - Map binding, - RenderContext context, - @Nullable Text text - ) { - Objects.requireNonNull(part) - Objects.requireNonNull(binding) - Objects.requireNonNull(context) - def diagnostics = [] - try { - def dslMap = StandardDslMap.get(context) { - it.putCustom('binding', binding) - it.loggerName = "GspPart(${ part.path })" - it.onDiagnostics = diagnostics.&addAll - if (text) { - it.text = text - } - } - def result = engine.createTemplate(part.text).make(dslMap) - new Tuple2<>(diagnostics, result.toString()) - } catch (Exception e) { - new Tuple2<>( - [*diagnostics, new Diagnostic( - "An exception occurred while rendering part ${ part.path }:\n${ e }", - e - )], - '' - ) - } - } - - @Override - String toString() { - "GspPartRenderer()" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/Part.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/Part.groovy deleted file mode 100644 index 9e5a66c..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/Part.groovy +++ /dev/null @@ -1,21 +0,0 @@ -package com.jessebrault.ssg.part - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck -@EqualsAndHashCode -class Part { - - String path - PartType type - String text - - @Override - String toString() { - "Part(path: ${ this.path }, type: ${ this.type })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/PartFilePartsProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/PartFilePartsProvider.groovy deleted file mode 100644 index f445690..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/PartFilePartsProvider.groovy +++ /dev/null @@ -1,48 +0,0 @@ -package com.jessebrault.ssg.part - -import com.jessebrault.ssg.provider.AbstractFileCollectionProvider -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import org.jetbrains.annotations.Nullable -import org.slf4j.Logger -import org.slf4j.LoggerFactory - -@NullCheck -@EqualsAndHashCode(includeFields = true) -class PartFilePartsProvider extends AbstractFileCollectionProvider implements PartsProvider { - - private static final Logger logger = LoggerFactory.getLogger(PartFilePartsProvider) - - private final Collection partTypes - - PartFilePartsProvider(File partsDir, Collection partTypes) { - super(partsDir) - this.partTypes = Objects.requireNonNull(partTypes) - } - - private @Nullable PartType getPartType(String extension) { - this.partTypes.find { - it.ids.contains(extension) - } - } - - @Override - protected @Nullable Part transformFileToT(File file, String relativePath, String extension) { - def partType = getPartType(extension) - if (!partType) { - logger.warn('there is no PartType for {}, ignoring', relativePath) - } - partType ? new Part(relativePath, partType, file.text) : null - } - - @Override - Collection getPartTypes() { - this.partTypes - } - - @Override - String toString() { - "PartFilePartsProvider(partsDir: ${ this.dir }, partTypes: ${ this.partTypes })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/PartRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/PartRenderer.groovy deleted file mode 100644 index 9d27b39..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/PartRenderer.groovy +++ /dev/null @@ -1,17 +0,0 @@ -package com.jessebrault.ssg.part - -import com.jessebrault.ssg.Diagnostic -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.text.Text -import org.jetbrains.annotations.Nullable - -interface PartRenderer { - - Tuple2, String> render( - Part part, - Map binding, - RenderContext context, - @Nullable Text text - ) - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/PartType.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/PartType.groovy deleted file mode 100644 index f5df2ad..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/PartType.groovy +++ /dev/null @@ -1,20 +0,0 @@ -package com.jessebrault.ssg.part - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck -@EqualsAndHashCode -class PartType { - - Collection ids - PartRenderer renderer - - @Override - String toString() { - "PartType(ids: ${ this.ids }, renderer: ${ this.renderer })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/part/PartsProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/part/PartsProvider.groovy deleted file mode 100644 index 01a3886..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/part/PartsProvider.groovy +++ /dev/null @@ -1,7 +0,0 @@ -package com.jessebrault.ssg.part - -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/provider/AbstractFileCollectionProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/provider/AbstractFileCollectionProvider.groovy deleted file mode 100644 index 56ae2c7..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/provider/AbstractFileCollectionProvider.groovy +++ /dev/null @@ -1,40 +0,0 @@ -package com.jessebrault.ssg.provider - -import groovy.io.FileType -import org.jetbrains.annotations.Nullable -import org.slf4j.Logger -import org.slf4j.LoggerFactory - -import static com.jessebrault.ssg.util.ExtensionsUtil.getExtension - -abstract class AbstractFileCollectionProvider implements Provider>, WithWatchableDir { - - private static final Logger logger = LoggerFactory.getLogger(AbstractFileCollectionProvider) - - protected final File dir - - AbstractFileCollectionProvider(File dir) { - this.dir = Objects.requireNonNull(dir) - this.watchableDir = dir - } - - protected abstract @Nullable T transformFileToT(File file, String relativePath, String extension) - - @Override - Collection provide() { - if (!this.dir.isDirectory()) { - logger.warn('{} does not exist or is not a directory; skipping', this.dir) - [] - } else { - def ts = [] - this.dir.eachFileRecurse(FileType.FILES) { - def t = transformFileToT(it, this.dir.relativePath(it), getExtension(it.path)) - if (t) { - ts << t - } - } - ts - } - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/provider/Provider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/provider/Provider.groovy deleted file mode 100644 index d006bb6..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/provider/Provider.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg.provider - -interface Provider { - T provide() -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/provider/WithWatchableDir.groovy b/lib/src/main/groovy/com/jessebrault/ssg/provider/WithWatchableDir.groovy deleted file mode 100644 index cc15bb7..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/provider/WithWatchableDir.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg.provider - -trait WithWatchableDir { - File watchableDir -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/renderer/RenderContext.groovy b/lib/src/main/groovy/com/jessebrault/ssg/renderer/RenderContext.groovy deleted file mode 100644 index 5a4171a..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/renderer/RenderContext.groovy +++ /dev/null @@ -1,26 +0,0 @@ -package com.jessebrault.ssg.renderer - -import com.jessebrault.ssg.Config -import com.jessebrault.ssg.SiteSpec -import com.jessebrault.ssg.part.Part -import com.jessebrault.ssg.task.TaskContainer -import com.jessebrault.ssg.task.TaskTypeContainer -import com.jessebrault.ssg.text.Text -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck(includeGenerated = true) -@EqualsAndHashCode -final class RenderContext { - final Config config - final SiteSpec siteSpec - final Map globals - final Collection texts - final Collection parts - final String sourcePath - final String targetPath - final TaskContainer tasks - final TaskTypeContainer taskTypes -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy deleted file mode 100644 index 335651c..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/GspSpecialPageRenderer.groovy +++ /dev/null @@ -1,46 +0,0 @@ -package com.jessebrault.ssg.specialpage - -import com.jessebrault.ssg.Diagnostic -import com.jessebrault.ssg.dsl.StandardDslMap -import com.jessebrault.ssg.renderer.RenderContext -import groovy.text.GStringTemplateEngine -import groovy.text.TemplateEngine -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck - -@NullCheck -@EqualsAndHashCode -class GspSpecialPageRenderer implements SpecialPageRenderer { - - private static final TemplateEngine engine = new GStringTemplateEngine() - - @Override - Tuple2, String> render( - SpecialPage specialPage, - RenderContext context - ) { - def diagnostics = [] - try { - def dslMap = StandardDslMap.get(context) { - it.loggerName = "GspSpecialPage(${ specialPage.path })" - it.onDiagnostics = diagnostics.&addAll - } - def result = engine.createTemplate(specialPage.text).make(dslMap) - new Tuple2<>(diagnostics, result.toString()) - } catch (Exception e) { - new Tuple2<>( - [*diagnostics, new Diagnostic( - "An exception occurred while rendering specialPage ${ specialPage.path }:\n${ e }", - e - )], - '' - ) - } - } - - @Override - String toString() { - "GspSpecialPageRenderer()" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPage.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPage.groovy deleted file mode 100644 index d1af35d..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPage.groovy +++ /dev/null @@ -1,21 +0,0 @@ -package com.jessebrault.ssg.specialpage - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck(includeGenerated = true) -@EqualsAndHashCode -final class SpecialPage { - - final String text - final String path - final SpecialPageType type - - @Override - String toString() { - "SpecialPage(path: ${ this.path }, type: ${ this.type })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProvider.groovy deleted file mode 100644 index a8d9f9c..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageFileSpecialPagesProvider.groovy +++ /dev/null @@ -1,50 +0,0 @@ -package com.jessebrault.ssg.specialpage - -import com.jessebrault.ssg.provider.AbstractFileCollectionProvider -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import org.jetbrains.annotations.Nullable -import org.slf4j.Logger -import org.slf4j.LoggerFactory - -@NullCheck -@EqualsAndHashCode(includeFields = true) -class SpecialPageFileSpecialPagesProvider extends AbstractFileCollectionProvider - implements SpecialPagesProvider { - - private static final Logger logger = LoggerFactory.getLogger(SpecialPageFileSpecialPagesProvider) - - private final Collection specialPageTypes - - SpecialPageFileSpecialPagesProvider(File specialPagesDir, Collection specialPageTypes) { - super(specialPagesDir) - this.specialPageTypes = Objects.requireNonNull(specialPageTypes) - } - - private @Nullable SpecialPageType getSpecialPageType(String extension) { - this.specialPageTypes.find { - it.ids.contains(extension) - } - } - - @Override - protected @Nullable SpecialPage transformFileToT(File file, String relativePath, String extension) { - def specialPageType = getSpecialPageType(extension) - if (!specialPageType) { - logger.warn('there is no SpecialPageType for {}, ignoring', relativePath) - } - specialPageType ? new SpecialPage(file.text, relativePath, specialPageType) : null - } - - @Override - Collection getSpecialPageTypes() { - this.specialPageTypes - } - - @Override - String toString() { - "SpecialPageFileSpecialPagesProvider(specialPagesDir: ${ this.dir }, " + - "specialPageTypes: ${ this.specialPageTypes })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageRenderer.groovy deleted file mode 100644 index 44e5363..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageRenderer.groovy +++ /dev/null @@ -1,16 +0,0 @@ -package com.jessebrault.ssg.specialpage - -import com.jessebrault.ssg.Diagnostic -import com.jessebrault.ssg.SiteSpec -import com.jessebrault.ssg.part.Part -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.text.Text - -interface SpecialPageRenderer { - - Tuple2, String> render( - SpecialPage specialPage, - RenderContext context - ) - -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageType.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageType.groovy deleted file mode 100644 index cf5be4d..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPageType.groovy +++ /dev/null @@ -1,20 +0,0 @@ -package com.jessebrault.ssg.specialpage - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck -@EqualsAndHashCode -class SpecialPageType { - - Collection ids - SpecialPageRenderer renderer - - @Override - String toString() { - "SpecialPageType(ids: ${ this.ids }, renderer: ${ this.renderer })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPagesProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPagesProvider.groovy deleted file mode 100644 index 1b06d47..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/specialpage/SpecialPagesProvider.groovy +++ /dev/null @@ -1,7 +0,0 @@ -package com.jessebrault.ssg.specialpage - -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/tagbuilder/DynamicTagBuilder.groovy b/lib/src/main/groovy/com/jessebrault/ssg/tagbuilder/DynamicTagBuilder.groovy deleted file mode 100644 index 9acb4d0..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/tagbuilder/DynamicTagBuilder.groovy +++ /dev/null @@ -1,77 +0,0 @@ -package com.jessebrault.ssg.tagbuilder - -import org.codehaus.groovy.runtime.InvokerHelper - -class DynamicTagBuilder implements TagBuilder { - - @Override - String create(String name) { - "<$name />" - } - - @Override - String create(String name, Map attributes) { - def formattedAttributes = attributes.collect { - if (it.value instanceof String) { - it.key + '="' + it.value + '"' - } else if (it.value instanceof Integer) { - it.key + '=' + it.value - } else if (it.value instanceof Boolean && it.value == true) { - it.key - } else { - it.key + '="' + it.value.toString() + '"' - } - }.join(' ') - "<$name $formattedAttributes />" - } - - @Override - String create(String name, String body) { - "<$name>$body" - } - - @Override - String create(String name, Map attributes, String body) { - def formattedAttributes = attributes.collect { - if (it.value instanceof String) { - it.key + '="' + it.value + '"' - } else if (it.value instanceof Integer) { - it.key + '=' + it.value - } else if (it.value instanceof Boolean && it.value == true) { - it.key - } else { - it.key + '="' + it.value.toString() + '"' - } - }.join(' ') - "<$name $formattedAttributes>$body" - } - - @Override - Object invokeMethod(String name, Object args) { - def argsList = InvokerHelper.asList(args) - return switch (argsList.size()) { - case 0 -> this.create(name) - case 1 -> { - def arg0 = argsList[0] - if (arg0 instanceof Map) { - this.create(name, arg0) - } else if (arg0 instanceof String) { - this.create(name, arg0) - } else { - throw new MissingMethodException(name, this.class, args, false) - } - } - case 2 -> { - def arg0 = argsList[0] - def arg1 = argsList[1] - if (arg0 instanceof Map && arg1 instanceof String) { - this.create(name, arg0, arg1) - } else { - throw new MissingMethodException(name, this.class, args, false) - } - } - default -> throw new MissingMethodException(name, this.class, args, false) - } - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/tagbuilder/TagBuilder.groovy b/lib/src/main/groovy/com/jessebrault/ssg/tagbuilder/TagBuilder.groovy deleted file mode 100644 index a92c64a..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/tagbuilder/TagBuilder.groovy +++ /dev/null @@ -1,8 +0,0 @@ -package com.jessebrault.ssg.tagbuilder - -interface TagBuilder { - String create(String name) - String create(String name, Map attributes) - String create(String name, String body) - String create(String name, Map attributes, String body) -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/AbstractTask.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/AbstractTask.groovy deleted file mode 100644 index bfc3565..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/AbstractTask.groovy +++ /dev/null @@ -1,31 +0,0 @@ -package com.jessebrault.ssg.task - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck - -@NullCheck -@EqualsAndHashCode -abstract class AbstractTask implements Task { - - final TaskType type - final String name - - AbstractTask(TaskType type, String name) { - this.type = type - this.name = name - } - - protected abstract T getThis() - - @Override - void execute(TaskExecutorContext context) { - // I am guessing that if we put this.getThis(), it will think the runtime type is AbstractTask? Not sure. - this.type.executor.execute(getThis(), context) - } - - @Override - String toString() { - "AbstractTask(name: ${ this.name }, type: ${ this.type })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/FileInput.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/FileInput.groovy deleted file mode 100644 index 496b2fa..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/FileInput.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg.task - -interface FileInput extends Input { - File getFile() -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/FileOutput.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/FileOutput.groovy deleted file mode 100644 index 34bd660..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/FileOutput.groovy +++ /dev/null @@ -1,6 +0,0 @@ -package com.jessebrault.ssg.task - -interface FileOutput extends Output { - File getFile() - String getContent() -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/HtmlFileOutput.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/HtmlFileOutput.groovy deleted file mode 100644 index bf69c28..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/HtmlFileOutput.groovy +++ /dev/null @@ -1,26 +0,0 @@ -package com.jessebrault.ssg.task - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false, includeFields = true) -@NullCheck(includeGenerated = true) -@EqualsAndHashCode -final class HtmlFileOutput { - - final File file - final String htmlPath - - private final Closure contentClosure - - String getContent(TaskContainer tasks, TaskTypeContainer taskTypes, Closure onDiagnostics) { - this.contentClosure(tasks, taskTypes, onDiagnostics) - } - - @Override - String toString() { - "HtmlFileOutput(file: ${ this.file }, htmlPath: ${ this.htmlPath })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/Input.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/Input.groovy deleted file mode 100644 index ac7ff57..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/Input.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg.task - -interface Input { - String getName() -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/Output.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/Output.groovy deleted file mode 100644 index f03dcda..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/Output.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg.task - -interface Output { - String getName() -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTask.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTask.groovy deleted file mode 100644 index fc4eed6..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTask.groovy +++ /dev/null @@ -1,51 +0,0 @@ -package com.jessebrault.ssg.task - -import com.jessebrault.ssg.specialpage.SpecialPage -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck - -@NullCheck -@EqualsAndHashCode -final class SpecialPageToHtmlFileTask extends AbstractTask { - - private static final class SpecialPageToHtmlFileTaskExecutor implements TaskExecutor { - - @Override - void execute(SpecialPageToHtmlFileTask task, TaskExecutorContext context) { - task.output.file.createParentDirectories() - task.output.file.write(task.output.getContent( - context.allTasks, context.allTypes, context.onDiagnostics - )) - } - - @Override - String toString() { - 'SpecialPageToHtmlFileTaskExecutor()' - } - - } - - static final TaskType TYPE = new TaskType<>( - 'specialPageToHtmlFile', new SpecialPageToHtmlFileTaskExecutor() - ) - - final SpecialPage input - final HtmlFileOutput output - - SpecialPageToHtmlFileTask(String name, SpecialPage input, HtmlFileOutput output) { - super(TYPE, name) - this.input = input - this.output = output - } - - @Override - protected SpecialPageToHtmlFileTask getThis() { - this - } - - @Override - String toString() { - "SpecialPageToHtmlFileTask(input: ${ this.input }, output: ${ this.output }, super: ${ super })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTaskFactory.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTaskFactory.groovy deleted file mode 100644 index 45017e5..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/SpecialPageToHtmlFileTaskFactory.groovy +++ /dev/null @@ -1,87 +0,0 @@ -package com.jessebrault.ssg.task - -import com.jessebrault.ssg.Build -import com.jessebrault.ssg.Result -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.util.ExtensionsUtil -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import org.slf4j.Marker -import org.slf4j.MarkerFactory - -final class SpecialPageToHtmlFileTaskFactory implements TaskFactory { - - private static final Logger logger = LoggerFactory.getLogger(SpecialPageToHtmlFileTaskFactory) - private static final Marker enter = MarkerFactory.getMarker('ENTER') - private static final Marker exit = MarkerFactory.getMarker('EXIT') - - @Override - TaskType getTaskType() { - SpecialPageToHtmlFileTask.TYPE - } - - @Override - Result> getTasks(Build build) { - logger.trace(enter, 'build: {}', build) - logger.info('processing build with name {} for SpecialPageToHtmlFileTasks', build.name) - - def config = build.config - def siteSpec = build.siteSpec - def globals = build.globals - - def specialPages = config.specialPagesProviders.collectMany { it.provide() } - def templates = config.templatesProviders.collectMany { it.provide() } - def parts = config.partsProviders.collectMany { it.provide() } - def texts = config.textProviders.collectMany { it.provide() } - - logger.debug('\n\tspecialPages: {}\n\ttemplates: {}\n\tparts: {}', specialPages, templates, parts) - - def tasks = new TaskCollection(specialPages.findResults { - logger.trace(enter, 'specialPage: {}', it) - logger.info('processing specialPage with path: {}', it.path) - - def htmlPath = ExtensionsUtil.stripExtension(it.path) + '.html' - - def renderSpecialPage = { TaskContainer tasks, TaskTypeContainer taskTypes, Closure onDiagnostics -> - def renderResult = it.type.renderer.render( - it, - new RenderContext( - config, - siteSpec, - globals, - texts, - parts, - it.path, - htmlPath, - tasks, - taskTypes - ) - ) - - if (!renderResult.v1.isEmpty()) { - onDiagnostics(renderResult.v1) - '' - } else { - renderResult.v2 - } - } - - def result = new SpecialPageToHtmlFileTask( - "specialPageToHtmlFileTask:${ it.path }:${ htmlPath }", - it, - new HtmlFileOutput( - new File(build.outDir, htmlPath), - htmlPath, - renderSpecialPage - ) - ) - logger.trace(exit, 'result: {}', result) - result - }) - - def result = new Result<>([], tasks) - logger.trace(exit, 'result: {}', result) - result - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/Task.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/Task.groovy deleted file mode 100644 index 47217d2..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/Task.groovy +++ /dev/null @@ -1,7 +0,0 @@ -package com.jessebrault.ssg.task - -interface Task { - TaskType getType() - String getName() - void execute(TaskExecutorContext context) -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskCollection.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TaskCollection.groovy deleted file mode 100644 index 50a3f37..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskCollection.groovy +++ /dev/null @@ -1,24 +0,0 @@ -package com.jessebrault.ssg.task - -import static java.util.Objects.requireNonNull - -class TaskCollection { - - @Delegate - private final Collection tasks = new ArrayList() - - TaskCollection(Collection tasks = null) { - if (tasks != null) { - this.tasks.addAll(requireNonNull(tasks)) - } - } - - def TaskCollection findAllByType( - TaskType taskType - ) { - new TaskCollection<>(this.tasks.findResults { - it.type == taskType ? it : null - }) - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskContainer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TaskContainer.groovy deleted file mode 100644 index 3661476..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskContainer.groovy +++ /dev/null @@ -1,9 +0,0 @@ -package com.jessebrault.ssg.task - -final class TaskContainer extends TaskCollection { - - TaskContainer(Collection tasks = null) { - super(tasks) - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskExecutor.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TaskExecutor.groovy deleted file mode 100644 index 35cb769..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskExecutor.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg.task - -interface TaskExecutor { - void execute(T task, TaskExecutorContext context) -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskExecutorContext.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TaskExecutorContext.groovy deleted file mode 100644 index a1da7b1..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskExecutorContext.groovy +++ /dev/null @@ -1,23 +0,0 @@ -package com.jessebrault.ssg.task - -import com.jessebrault.ssg.Build -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck(includeGenerated = true) -@EqualsAndHashCode -final class TaskExecutorContext { - - final Build build - final TaskContainer allTasks - final TaskTypeContainer allTypes - final Closure onDiagnostics - - @Override - String toString() { - "TaskExecutorContext(build: ${ this.build }, allTasks: ${ this.allTasks }, allTypes: ${ this.allTypes })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskFactory.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TaskFactory.groovy deleted file mode 100644 index 60b78ff..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskFactory.groovy +++ /dev/null @@ -1,9 +0,0 @@ -package com.jessebrault.ssg.task - -import com.jessebrault.ssg.Build -import com.jessebrault.ssg.Result - -interface TaskFactory { - TaskType getTaskType() - Result> getTasks(Build build) -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskFactoryManager.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TaskFactoryManager.groovy deleted file mode 100644 index 7a03b5e..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskFactoryManager.groovy +++ /dev/null @@ -1,27 +0,0 @@ -package com.jessebrault.ssg.task - -import com.jessebrault.ssg.provider.Provider -import groovy.io.FileType - -final class TaskFactoryManager { - - Collection getAllFactories(Collection> factoryPluginDirectoryProviders) { - def factories = [] - - def gcl = new GroovyClassLoader() - def pluginDirectories = factoryPluginDirectoryProviders.collect { it.provide() } - pluginDirectories.each { - it.eachFileRecurse(FileType.FILES) { - def cl = gcl.parseClass(it) - def constructor = cl.getDeclaredConstructor() - def factory = constructor.newInstance() as TaskFactory - factories << factory - } - } - - - - factories - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskType.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TaskType.groovy deleted file mode 100644 index 2b2652b..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskType.groovy +++ /dev/null @@ -1,20 +0,0 @@ -package com.jessebrault.ssg.task - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck(includeGenerated = true) -@EqualsAndHashCode -final class TaskType { - - final String name - final TaskExecutor executor - - @Override - String toString() { - "TaskType(${ this.name }, ${ this.executor })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskTypeContainer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TaskTypeContainer.groovy deleted file mode 100644 index b4092cc..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TaskTypeContainer.groovy +++ /dev/null @@ -1,31 +0,0 @@ -package com.jessebrault.ssg.task - -final class TaskTypeContainer { - - @Delegate - private final Set> taskTypes = [] - - TaskTypeContainer(Collection> taskTypes) { - if (taskTypes != null) { - this.taskTypes.addAll(taskTypes) - } - } - - TaskTypeContainer(TaskTypeContainer taskTypeContainer) { - if (taskTypeContainer != null) { - this.taskTypes.addAll(taskTypeContainer) - } - } - - TaskTypeContainer() {} - - @Override - TaskType getProperty(String propertyName) { - def taskType = this.taskTypes.find { it.name == propertyName } - if (!taskType) { - throw new IllegalArgumentException("no such taskType: ${ propertyName }") - } - taskType - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TextInput.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TextInput.groovy deleted file mode 100644 index beed338..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TextInput.groovy +++ /dev/null @@ -1,14 +0,0 @@ -package com.jessebrault.ssg.task - -import com.jessebrault.ssg.text.Text -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck(includeGenerated = true) -@EqualsAndHashCode -final class TextInput implements Input { - final String name - final Text text -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TextToHtmlFileTask.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TextToHtmlFileTask.groovy deleted file mode 100644 index f89a063..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TextToHtmlFileTask.groovy +++ /dev/null @@ -1,51 +0,0 @@ -package com.jessebrault.ssg.task - -import com.jessebrault.ssg.text.Text -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck - -@NullCheck -@EqualsAndHashCode(callSuper = true) -final class TextToHtmlFileTask extends AbstractTask { - - private static final class TextToHtmlFileTaskExecutor implements TaskExecutor { - - @Override - void execute(TextToHtmlFileTask task, TaskExecutorContext context) { - task.output.file.createParentDirectories() - task.output.file.write(task.output.getContent( - context.allTasks, context.allTypes, context.onDiagnostics - )) - } - - @Override - String toString() { - 'TextToHtmlFileTaskExecutor()' - } - - } - - static final TaskType TYPE = new TaskType<>( - 'textToHtmlFile', new TextToHtmlFileTaskExecutor() - ) - - final Text input - final HtmlFileOutput output - - TextToHtmlFileTask(String name, Text input, HtmlFileOutput output) { - super(TYPE, name) - this.input = input - this.output = output - } - - @Override - protected TextToHtmlFileTask getThis() { - this - } - - @Override - String toString() { - "TextToHtmlFileTask(input: ${ this.input }, output: ${ this.output }, super: ${ super })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/TextToHtmlFileTaskFactory.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/TextToHtmlFileTaskFactory.groovy deleted file mode 100644 index 0f8d1c0..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/TextToHtmlFileTaskFactory.groovy +++ /dev/null @@ -1,117 +0,0 @@ -package com.jessebrault.ssg.task - -import com.jessebrault.ssg.Build -import com.jessebrault.ssg.Diagnostic -import com.jessebrault.ssg.Result -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.text.FrontMatter -import com.jessebrault.ssg.util.ExtensionsUtil -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import org.slf4j.Marker -import org.slf4j.MarkerFactory - -final class TextToHtmlFileTaskFactory implements TaskFactory { - - private static final Logger logger = LoggerFactory.getLogger(TextToHtmlFileTaskFactory) - private static final Marker enter = MarkerFactory.getMarker('ENTER') - private static final Marker exit = MarkerFactory.getMarker('EXIT') - - @Override - TaskType getTaskType() { - TextToHtmlFileTask.TYPE - } - - @Override - Result> getTasks(Build build) { - logger.trace(enter, 'build: {}', build) - logger.info('getting TextToHtmlFileTasks for build with name: {}', build.name) - - def config = build.config - def siteSpec = build.siteSpec - def globals = build.globals - def diagnostics = [] - - // Get all texts, templates, parts, and specialPages - def texts = config.textProviders.collectMany { it.provide() } - def templates = config.templatesProviders.collectMany { it.provide() } - def parts = config.partsProviders.collectMany { it.provide() } - - logger.debug('\n\ttexts: {}\n\ttemplates: {}\n\tparts: {}', texts, templates, parts) - - def tasks = new TaskCollection(texts.findResults { - logger.trace(enter, 'text: {}', it) - logger.info('processing text with path: {}', it.path) - - def frontMatterResult = it.type.frontMatterGetter.get(it) - FrontMatter frontMatter - if (!frontMatterResult.v1.isEmpty()) { - diagnostics.addAll(frontMatterResult.v1) - logger.trace(exit, 'result: {}', null) - return null - } else { - frontMatter = frontMatterResult.v2 - logger.debug('frontMatter: {}', frontMatter) - } - - def desiredTemplate = frontMatter.find('template') - if (desiredTemplate.isEmpty()) { - logger.info('text with path {} has no \'template\' key in its frontMatter; skipping', it.path) - logger.trace(exit, 'result: {}', null) - return null - } - def template = templates.find { it.path == desiredTemplate.get() } - if (template == null) { - diagnostics << new Diagnostic("in text with path ${ it.path }, frontMatter.template refers to an unknown template: ${ desiredTemplate.get() }") - logger.trace(exit, 'result: {}', null) - return null - } - logger.debug('found template: {}', template) - - def htmlPath = ExtensionsUtil.stripExtension(it.path) + '.html' - - def renderTemplate = { TaskContainer tasks, TaskTypeContainer taskTypes, Closure onDiagnostics -> - def templateRenderResult = template.type.renderer.render( - template, - it, - new RenderContext( - config, - siteSpec, - globals, - texts, - parts, - it.path, - htmlPath, - tasks, - taskTypes - ) - ) - - if (!templateRenderResult.v1.isEmpty()) { - onDiagnostics(templateRenderResult.v1) - '' - } else { - templateRenderResult.v2 - } - } - - def result = new TextToHtmlFileTask( - "textToHtmlFileTask:${ it.path }:${ htmlPath }", - it, - new HtmlFileOutput( - new File(build.outDir, htmlPath), - htmlPath, - renderTemplate - ) - ) - - logger.trace(exit, 'result: {}', result) - result - }) - - def result = new Result<>(diagnostics, tasks) - logger.trace(exit, 'result: {}', result) - result - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/WithInput.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/WithInput.groovy deleted file mode 100644 index 7482c8a..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/WithInput.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg.task - -interface WithInput { - I getInput() -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/task/WithOutput.groovy b/lib/src/main/groovy/com/jessebrault/ssg/task/WithOutput.groovy deleted file mode 100644 index b181686..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/task/WithOutput.groovy +++ /dev/null @@ -1,5 +0,0 @@ -package com.jessebrault.ssg.task - -interface WithOutput { - O getOutput() -} \ No newline at end of file diff --git a/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy b/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy deleted file mode 100644 index 271b240..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/template/GspTemplateRenderer.groovy +++ /dev/null @@ -1,49 +0,0 @@ -package com.jessebrault.ssg.template - -import com.jessebrault.ssg.Diagnostic -import com.jessebrault.ssg.dsl.StandardDslMap -import com.jessebrault.ssg.renderer.RenderContext -import com.jessebrault.ssg.text.Text -import groovy.text.GStringTemplateEngine -import groovy.text.TemplateEngine -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck - -@NullCheck -@EqualsAndHashCode -class GspTemplateRenderer implements TemplateRenderer { - - private static final TemplateEngine engine = new GStringTemplateEngine() - - @Override - Tuple2, String> render( - Template template, - Text text, - RenderContext context - ) { - def diagnostics = [] - try { - def dslMap = StandardDslMap.get(context) { - it.loggerName = "GspTemplate(${ template.path })" - it.onDiagnostics = diagnostics.&addAll - it.text = text - } - def result = engine.createTemplate(template.text).make(dslMap) - new Tuple2<>(diagnostics, result.toString()) - } catch (Exception e) { - new Tuple2<>( - [*diagnostics, new Diagnostic( - "An exception occurred while rendering Template ${ template.path }:\n${ e }", - e - )], - '' - ) - } - } - - @Override - String toString() { - "GspTemplateRenderer()" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/template/Template.groovy b/lib/src/main/groovy/com/jessebrault/ssg/template/Template.groovy deleted file mode 100644 index 074cece..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/template/Template.groovy +++ /dev/null @@ -1,21 +0,0 @@ -package com.jessebrault.ssg.template - -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import groovy.transform.TupleConstructor - -@TupleConstructor(defaults = false) -@NullCheck -@EqualsAndHashCode -class Template { - - String text - String path - TemplateType type - - @Override - String toString() { - "Template(path: ${ this.path }, type: ${ this.type })" - } - -} diff --git a/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProvider.groovy b/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProvider.groovy deleted file mode 100644 index 1a08903..0000000 --- a/lib/src/main/groovy/com/jessebrault/ssg/template/TemplateFileTemplatesProvider.groovy +++ /dev/null @@ -1,48 +0,0 @@ -package com.jessebrault.ssg.template - -import com.jessebrault.ssg.provider.AbstractFileCollectionProvider -import groovy.transform.EqualsAndHashCode -import groovy.transform.NullCheck -import org.jetbrains.annotations.Nullable -import org.slf4j.Logger -import org.slf4j.LoggerFactory - -@NullCheck -@EqualsAndHashCode(includeFields = true) -class TemplateFileTemplatesProvider extends AbstractFileCollectionProvider