Various bug fixes.
This commit is contained in:
parent
e462c60646
commit
654a089332
@ -1,8 +1,7 @@
|
|||||||
package com.jessebrault.ssg
|
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.SkipTemplate
|
||||||
import com.jessebrault.ssg.view.WvcCompiler
|
|
||||||
import com.jessebrault.ssg.view.WvcPageView
|
import com.jessebrault.ssg.view.WvcPageView
|
||||||
import groowt.view.component.factory.ComponentFactories
|
import groowt.view.component.factory.ComponentFactories
|
||||||
import groowt.view.component.web.DefaultWebViewComponentContext
|
import groowt.view.component.web.DefaultWebViewComponentContext
|
||||||
@ -13,7 +12,7 @@ import groowt.view.component.web.WebViewComponentScope
|
|||||||
class DefaultPageContextFactory implements PageContextFactory {
|
class DefaultPageContextFactory implements PageContextFactory {
|
||||||
|
|
||||||
protected WebViewComponent makeComponent(
|
protected WebViewComponent makeComponent(
|
||||||
ObjectFactory objectFactory,
|
RegistryObjectFactory objectFactory,
|
||||||
Class<? extends WebViewComponent> wvcClass,
|
Class<? extends WebViewComponent> wvcClass,
|
||||||
Map attr,
|
Map attr,
|
||||||
Object[] args
|
Object[] args
|
||||||
@ -32,7 +31,7 @@ class DefaultPageContextFactory implements PageContextFactory {
|
|||||||
@Override
|
@Override
|
||||||
WebViewComponentContext makeContext(
|
WebViewComponentContext makeContext(
|
||||||
WvcPageView wvcPageView,
|
WvcPageView wvcPageView,
|
||||||
ObjectFactory buildObjectFactory,
|
RegistryObjectFactory buildObjectFactory,
|
||||||
Set<Class<? extends WebViewComponent>> allWvcClasses
|
Set<Class<? extends WebViewComponent>> allWvcClasses
|
||||||
) {
|
) {
|
||||||
new DefaultWebViewComponentContext().tap {
|
new DefaultWebViewComponentContext().tap {
|
||||||
@ -47,7 +46,7 @@ class DefaultPageContextFactory implements PageContextFactory {
|
|||||||
|
|
||||||
// set the template
|
// set the template
|
||||||
if (component.componentTemplate == null && !wvcClass.isAnnotationPresent(SkipTemplate)) {
|
if (component.componentTemplate == null && !wvcClass.isAnnotationPresent(SkipTemplate)) {
|
||||||
def wvcCompilerFactory = buildObjectFactory.createInstance(WvcCompilerFactory)
|
def wvcCompilerFactory = buildObjectFactory.get(WvcCompilerFactory)
|
||||||
def wvcCompiler = wvcCompilerFactory.getWvcCompiler()
|
def wvcCompiler = wvcCompilerFactory.getWvcCompiler()
|
||||||
def compileResult = wvcCompiler.compileTemplate(
|
def compileResult = wvcCompiler.compileTemplate(
|
||||||
wvcClass,
|
wvcClass,
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.jessebrault.ssg;
|
package com.jessebrault.ssg;
|
||||||
|
|
||||||
import com.jessebrault.di.ObjectFactory;
|
import com.jessebrault.di.ObjectFactory;
|
||||||
|
import com.jessebrault.di.RegistryObjectFactory;
|
||||||
import com.jessebrault.fp.either.Either;
|
import com.jessebrault.fp.either.Either;
|
||||||
import com.jessebrault.ssg.page.Page;
|
import com.jessebrault.ssg.page.Page;
|
||||||
import com.jessebrault.ssg.util.Diagnostic;
|
import com.jessebrault.ssg.util.Diagnostic;
|
||||||
@ -25,7 +26,7 @@ public class DefaultPageRenderer implements PageRenderer {
|
|||||||
public Either<Diagnostic, String> renderPage(
|
public Either<Diagnostic, String> renderPage(
|
||||||
Page page,
|
Page page,
|
||||||
String baseUrl,
|
String baseUrl,
|
||||||
ObjectFactory buildObjectFactory,
|
RegistryObjectFactory buildObjectFactory,
|
||||||
Set<Class<? extends WebViewComponent>> allWvcClasses
|
Set<Class<? extends WebViewComponent>> allWvcClasses
|
||||||
) {
|
) {
|
||||||
// create the view
|
// create the view
|
||||||
|
|||||||
@ -6,24 +6,25 @@ import com.jessebrault.ssg.page.Page;
|
|||||||
import com.jessebrault.ssg.page.PageFactory;
|
import com.jessebrault.ssg.page.PageFactory;
|
||||||
import com.jessebrault.ssg.page.PageSpec;
|
import com.jessebrault.ssg.page.PageSpec;
|
||||||
import com.jessebrault.ssg.view.PageView;
|
import com.jessebrault.ssg.view.PageView;
|
||||||
import com.jessebrault.ssg.view.WvcCompiler;
|
|
||||||
import io.github.classgraph.AnnotationInfo;
|
import io.github.classgraph.AnnotationInfo;
|
||||||
import io.github.classgraph.ClassInfoList;
|
import io.github.classgraph.ClassInfoList;
|
||||||
import io.github.classgraph.ScanResult;
|
import io.github.classgraph.ScanResult;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
|
|
||||||
import java.util.*;
|
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 {
|
public class DefaultPageScanner implements PageScanner {
|
||||||
|
|
||||||
private final ExecutorService executorService;
|
private final ExecutorService executorService;
|
||||||
private final WvcCompiler wvcCompiler;
|
private final WvcCompilerFactory wvcCompilerFactory;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public DefaultPageScanner(ExecutorService executorService, WvcCompiler wvcCompiler) {
|
public DefaultPageScanner(ExecutorService executorService, WvcCompilerFactory wvcCompilerFactory) {
|
||||||
this.executorService = executorService;
|
this.executorService = executorService;
|
||||||
this.wvcCompiler = wvcCompiler;
|
this.wvcCompilerFactory = wvcCompilerFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -47,7 +48,7 @@ public class DefaultPageScanner implements PageScanner {
|
|||||||
? classInfo.getSimpleName() + "Template.wvc"
|
? classInfo.getSimpleName() + "Template.wvc"
|
||||||
: pageSpec.templateResource(),
|
: pageSpec.templateResource(),
|
||||||
"objectFactory", buildObjectFactory,
|
"objectFactory", buildObjectFactory,
|
||||||
"wvcCompiler", this.wvcCompiler
|
"wvcCompiler", this.wvcCompilerFactory.getWvcCompiler()
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
}, this.executorService);
|
}, this.executorService);
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import java.io.File;
|
|||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -13,12 +14,11 @@ public class FilePageWriter implements PageWriter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(Page page, File outputDir, String renderedPage) {
|
public void write(Page page, File outputDir, String renderedPage) {
|
||||||
if (!outputDir.mkdirs()) {
|
//noinspection ResultOfMethodCallIgnored
|
||||||
throw new RuntimeException("Could not make directories for outputDir " + outputDir);
|
outputDir.mkdirs();
|
||||||
};
|
|
||||||
|
|
||||||
// calculate target path
|
// 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("/")) {
|
if (page.getPath().endsWith("/")) {
|
||||||
pathParts.add("index");
|
pathParts.add("index");
|
||||||
}
|
}
|
||||||
@ -30,9 +30,9 @@ public class FilePageWriter implements PageWriter {
|
|||||||
final File outputFile = new File(outputDir, path + page.getFileExtension());
|
final File outputFile = new File(outputDir, path + page.getFileExtension());
|
||||||
|
|
||||||
// make dirs and write
|
// make dirs and write
|
||||||
if (!outputFile.getParentFile().mkdirs()) {
|
//noinspection ResultOfMethodCallIgnored
|
||||||
throw new RuntimeException("Could not make parent directories for " + outputFile);
|
outputFile.getParentFile().mkdirs();
|
||||||
}
|
|
||||||
try (final FileWriter writer = new FileWriter(outputFile)) {
|
try (final FileWriter writer = new FileWriter(outputFile)) {
|
||||||
writer.write(renderedPage);
|
writer.write(renderedPage);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.jessebrault.ssg;
|
package com.jessebrault.ssg;
|
||||||
|
|
||||||
import com.jessebrault.di.ObjectFactory;
|
import com.jessebrault.di.ObjectFactory;
|
||||||
|
import com.jessebrault.di.RegistryObjectFactory;
|
||||||
import com.jessebrault.ssg.view.WvcPageView;
|
import com.jessebrault.ssg.view.WvcPageView;
|
||||||
import groowt.view.component.web.WebViewComponent;
|
import groowt.view.component.web.WebViewComponent;
|
||||||
import groowt.view.component.web.WebViewComponentContext;
|
import groowt.view.component.web.WebViewComponentContext;
|
||||||
@ -10,7 +11,7 @@ import java.util.Set;
|
|||||||
public interface PageContextFactory {
|
public interface PageContextFactory {
|
||||||
WebViewComponentContext makeContext(
|
WebViewComponentContext makeContext(
|
||||||
WvcPageView wvcPageView,
|
WvcPageView wvcPageView,
|
||||||
ObjectFactory buildObjectFactory,
|
RegistryObjectFactory buildObjectFactory,
|
||||||
Set<Class<? extends WebViewComponent>> allWvcClasses
|
Set<Class<? extends WebViewComponent>> allWvcClasses
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package com.jessebrault.ssg;
|
package com.jessebrault.ssg;
|
||||||
|
|
||||||
import com.jessebrault.di.ObjectFactory;
|
import com.jessebrault.di.RegistryObjectFactory;
|
||||||
import com.jessebrault.fp.either.Either;
|
import com.jessebrault.fp.either.Either;
|
||||||
import com.jessebrault.ssg.page.Page;
|
import com.jessebrault.ssg.page.Page;
|
||||||
import com.jessebrault.ssg.util.Diagnostic;
|
import com.jessebrault.ssg.util.Diagnostic;
|
||||||
@ -12,7 +12,7 @@ public interface PageRenderer {
|
|||||||
Either<Diagnostic, String> renderPage(
|
Either<Diagnostic, String> renderPage(
|
||||||
Page page,
|
Page page,
|
||||||
String baseUrl,
|
String baseUrl,
|
||||||
ObjectFactory buildObjectFactory,
|
RegistryObjectFactory buildObjectFactory,
|
||||||
Set<Class<? extends WebViewComponent>> allWvcClasses
|
Set<Class<? extends WebViewComponent>> allWvcClasses
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.jessebrault.ssg.text;
|
package com.jessebrault.ssg.text;
|
||||||
|
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
|
import jakarta.inject.Named;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -22,7 +23,7 @@ public class TextsDirMarkdownTextSupplier implements TextSupplier {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public TextsDirMarkdownTextSupplier(
|
public TextsDirMarkdownTextSupplier(
|
||||||
File projectDir,
|
@Named("projectDir") File projectDir,
|
||||||
ExecutorService executorService,
|
ExecutorService executorService,
|
||||||
MarkdownTextConverter markdownTextConverter
|
MarkdownTextConverter markdownTextConverter
|
||||||
) {
|
) {
|
||||||
@ -40,7 +41,7 @@ public class TextsDirMarkdownTextSupplier implements TextSupplier {
|
|||||||
final List<CompletableFuture<Void>> textFutures = walkStream
|
final List<CompletableFuture<Void>> textFutures = walkStream
|
||||||
.map(path -> {
|
.map(path -> {
|
||||||
return CompletableFuture.runAsync(() -> {
|
return CompletableFuture.runAsync(() -> {
|
||||||
if (path.endsWith(".md")) {
|
if (path.toString().endsWith(".md")) {
|
||||||
results.add(this.markdownTextConverter.convert(textsDir.toFile(), path.toFile()));
|
results.add(this.markdownTextConverter.convert(textsDir.toFile(), path.toFile()));
|
||||||
}
|
}
|
||||||
}, this.executorService);
|
}, this.executorService);
|
||||||
|
|||||||
@ -128,7 +128,7 @@ abstract class AbstractBuildCommand extends AbstractSubCommand {
|
|||||||
bind(named('scriptBaseUrls', List), toSingleton(scriptBaseUrls))
|
bind(named('scriptBaseUrls', List), toSingleton(scriptBaseUrls))
|
||||||
bind(named('projectDir', File), toSingleton(projectDir))
|
bind(named('projectDir', File), toSingleton(projectDir))
|
||||||
bind(TextsGetter, toClass(DefaultTextsGetter))
|
bind(TextsGetter, toClass(DefaultTextsGetter))
|
||||||
bind(WvcCompiler, toSelf())
|
bind(WvcCompilerFactory, toClass(DefaultWvcCompilerFactory))
|
||||||
bind(ComponentTemplateClassFactory, toClass(SimpleComponentTemplateClassFactory))
|
bind(ComponentTemplateClassFactory, toClass(SimpleComponentTemplateClassFactory))
|
||||||
bind(TextsDirMarkdownTextSupplier, toSelf())
|
bind(TextsDirMarkdownTextSupplier, toSelf())
|
||||||
bind(MarkdownTextConverter, toSelf())
|
bind(MarkdownTextConverter, toSelf())
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
[versions]
|
[versions]
|
||||||
classgraph = '4.8.184'
|
classgraph = '4.8.184'
|
||||||
commonmark = '0.24.0'
|
commonmark = '0.24.0'
|
||||||
di = '0.1.0'
|
di = '0.2.0-SNAPSHOT'
|
||||||
fp = '0.1.0'
|
fp = '0.1.0'
|
||||||
groovy = '4.0.27'
|
groovy = '4.0.27'
|
||||||
groowt = '0.1.4'
|
groowt = '0.1.4'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user