Various bug fixes.

This commit is contained in:
Jesse Brault 2026-01-04 18:16:03 -06:00
parent e462c60646
commit 654a089332
9 changed files with 29 additions and 26 deletions

View File

@ -1,8 +1,7 @@
package com.jessebrault.ssg
import com.jessebrault.di.ObjectFactory
import com.jessebrault.di.RegistryObjectFactory
import com.jessebrault.ssg.view.SkipTemplate
import com.jessebrault.ssg.view.WvcCompiler
import com.jessebrault.ssg.view.WvcPageView
import groowt.view.component.factory.ComponentFactories
import groowt.view.component.web.DefaultWebViewComponentContext
@ -13,7 +12,7 @@ import groowt.view.component.web.WebViewComponentScope
class DefaultPageContextFactory implements PageContextFactory {
protected WebViewComponent makeComponent(
ObjectFactory objectFactory,
RegistryObjectFactory objectFactory,
Class<? extends WebViewComponent> wvcClass,
Map attr,
Object[] args
@ -32,7 +31,7 @@ class DefaultPageContextFactory implements PageContextFactory {
@Override
WebViewComponentContext makeContext(
WvcPageView wvcPageView,
ObjectFactory buildObjectFactory,
RegistryObjectFactory buildObjectFactory,
Set<Class<? extends WebViewComponent>> allWvcClasses
) {
new DefaultWebViewComponentContext().tap {
@ -47,7 +46,7 @@ class DefaultPageContextFactory implements PageContextFactory {
// set the template
if (component.componentTemplate == null && !wvcClass.isAnnotationPresent(SkipTemplate)) {
def wvcCompilerFactory = buildObjectFactory.createInstance(WvcCompilerFactory)
def wvcCompilerFactory = buildObjectFactory.get(WvcCompilerFactory)
def wvcCompiler = wvcCompilerFactory.getWvcCompiler()
def compileResult = wvcCompiler.compileTemplate(
wvcClass,

View File

@ -1,6 +1,7 @@
package com.jessebrault.ssg;
import com.jessebrault.di.ObjectFactory;
import com.jessebrault.di.RegistryObjectFactory;
import com.jessebrault.fp.either.Either;
import com.jessebrault.ssg.page.Page;
import com.jessebrault.ssg.util.Diagnostic;
@ -25,7 +26,7 @@ public class DefaultPageRenderer implements PageRenderer {
public Either<Diagnostic, String> renderPage(
Page page,
String baseUrl,
ObjectFactory buildObjectFactory,
RegistryObjectFactory buildObjectFactory,
Set<Class<? extends WebViewComponent>> allWvcClasses
) {
// create the view

View File

@ -6,24 +6,25 @@ import com.jessebrault.ssg.page.Page;
import com.jessebrault.ssg.page.PageFactory;
import com.jessebrault.ssg.page.PageSpec;
import com.jessebrault.ssg.view.PageView;
import com.jessebrault.ssg.view.WvcCompiler;
import io.github.classgraph.AnnotationInfo;
import io.github.classgraph.ClassInfoList;
import io.github.classgraph.ScanResult;
import jakarta.inject.Inject;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
public class DefaultPageScanner implements PageScanner {
private final ExecutorService executorService;
private final WvcCompiler wvcCompiler;
private final WvcCompilerFactory wvcCompilerFactory;
@Inject
public DefaultPageScanner(ExecutorService executorService, WvcCompiler wvcCompiler) {
public DefaultPageScanner(ExecutorService executorService, WvcCompilerFactory wvcCompilerFactory) {
this.executorService = executorService;
this.wvcCompiler = wvcCompiler;
this.wvcCompilerFactory = wvcCompilerFactory;
}
@Override
@ -47,7 +48,7 @@ public class DefaultPageScanner implements PageScanner {
? classInfo.getSimpleName() + "Template.wvc"
: pageSpec.templateResource(),
"objectFactory", buildObjectFactory,
"wvcCompiler", this.wvcCompiler
"wvcCompiler", this.wvcCompilerFactory.getWvcCompiler()
)));
}
}, this.executorService);

View File

@ -6,6 +6,7 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -13,12 +14,11 @@ public class FilePageWriter implements PageWriter {
@Override
public void write(Page page, File outputDir, String renderedPage) {
if (!outputDir.mkdirs()) {
throw new RuntimeException("Could not make directories for outputDir " + outputDir);
};
//noinspection ResultOfMethodCallIgnored
outputDir.mkdirs();
// calculate target path
final List<String> pathParts = Arrays.asList(page.getPath().split("/"));
final List<String> pathParts = new ArrayList<>(Arrays.asList(page.getPath().split("/"))); // because Arrays.asList returns immutable
if (page.getPath().endsWith("/")) {
pathParts.add("index");
}
@ -30,9 +30,9 @@ public class FilePageWriter implements PageWriter {
final File outputFile = new File(outputDir, path + page.getFileExtension());
// make dirs and write
if (!outputFile.getParentFile().mkdirs()) {
throw new RuntimeException("Could not make parent directories for " + outputFile);
}
//noinspection ResultOfMethodCallIgnored
outputFile.getParentFile().mkdirs();
try (final FileWriter writer = new FileWriter(outputFile)) {
writer.write(renderedPage);
} catch (IOException e) {

View File

@ -1,6 +1,7 @@
package com.jessebrault.ssg;
import com.jessebrault.di.ObjectFactory;
import com.jessebrault.di.RegistryObjectFactory;
import com.jessebrault.ssg.view.WvcPageView;
import groowt.view.component.web.WebViewComponent;
import groowt.view.component.web.WebViewComponentContext;
@ -10,7 +11,7 @@ import java.util.Set;
public interface PageContextFactory {
WebViewComponentContext makeContext(
WvcPageView wvcPageView,
ObjectFactory buildObjectFactory,
RegistryObjectFactory buildObjectFactory,
Set<Class<? extends WebViewComponent>> allWvcClasses
);
}

View File

@ -1,6 +1,6 @@
package com.jessebrault.ssg;
import com.jessebrault.di.ObjectFactory;
import com.jessebrault.di.RegistryObjectFactory;
import com.jessebrault.fp.either.Either;
import com.jessebrault.ssg.page.Page;
import com.jessebrault.ssg.util.Diagnostic;
@ -12,7 +12,7 @@ public interface PageRenderer {
Either<Diagnostic, String> renderPage(
Page page,
String baseUrl,
ObjectFactory buildObjectFactory,
RegistryObjectFactory buildObjectFactory,
Set<Class<? extends WebViewComponent>> allWvcClasses
);
}

View File

@ -1,6 +1,7 @@
package com.jessebrault.ssg.text;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.io.File;
import java.io.IOException;
@ -22,7 +23,7 @@ public class TextsDirMarkdownTextSupplier implements TextSupplier {
@Inject
public TextsDirMarkdownTextSupplier(
File projectDir,
@Named("projectDir") File projectDir,
ExecutorService executorService,
MarkdownTextConverter markdownTextConverter
) {
@ -40,7 +41,7 @@ public class TextsDirMarkdownTextSupplier implements TextSupplier {
final List<CompletableFuture<Void>> textFutures = walkStream
.map(path -> {
return CompletableFuture.runAsync(() -> {
if (path.endsWith(".md")) {
if (path.toString().endsWith(".md")) {
results.add(this.markdownTextConverter.convert(textsDir.toFile(), path.toFile()));
}
}, this.executorService);

View File

@ -128,7 +128,7 @@ abstract class AbstractBuildCommand extends AbstractSubCommand {
bind(named('scriptBaseUrls', List), toSingleton(scriptBaseUrls))
bind(named('projectDir', File), toSingleton(projectDir))
bind(TextsGetter, toClass(DefaultTextsGetter))
bind(WvcCompiler, toSelf())
bind(WvcCompilerFactory, toClass(DefaultWvcCompilerFactory))
bind(ComponentTemplateClassFactory, toClass(SimpleComponentTemplateClassFactory))
bind(TextsDirMarkdownTextSupplier, toSelf())
bind(MarkdownTextConverter, toSelf())

View File

@ -1,7 +1,7 @@
[versions]
classgraph = '4.8.184'
commonmark = '0.24.0'
di = '0.1.0'
di = '0.2.0-SNAPSHOT'
fp = '0.1.0'
groovy = '4.0.27'
groowt = '0.1.4'