From 159519c94d23a93f819d82a997d5d9db8e18f3ce Mon Sep 17 00:00:00 2001 From: Minecon724 Date: Mon, 24 Feb 2025 14:43:52 +0100 Subject: [PATCH] Configurable compressors Signed-off-by: Minecon724 --- example_workdir/render.yml | 4 +++- src/main/java/eu/m724/blog/BlogBuilder.java | 10 ++++------ src/main/java/eu/m724/blog/data/RenderOptions.java | 8 +++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/example_workdir/render.yml b/example_workdir/render.yml index ac50d4f..68d7c62 100644 --- a/example_workdir/render.yml +++ b/example_workdir/render.yml @@ -1,3 +1,5 @@ # Render options here -compress: true \ No newline at end of file +compress: + - gz + - zstd \ No newline at end of file diff --git a/src/main/java/eu/m724/blog/BlogBuilder.java b/src/main/java/eu/m724/blog/BlogBuilder.java index 6200b0d..c863ab5 100644 --- a/src/main/java/eu/m724/blog/BlogBuilder.java +++ b/src/main/java/eu/m724/blog/BlogBuilder.java @@ -7,7 +7,6 @@ import eu.m724.blog.data.RenderOptions; import eu.m724.blog.data.Site; import eu.m724.blog.template.TemplateRenderer; import org.apache.commons.compress.compressors.CompressorException; -import org.apache.commons.compress.compressors.CompressorStreamFactory; import org.apache.commons.io.file.PathUtils; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.lib.RepositoryBuilder; @@ -145,7 +144,7 @@ public class BlogBuilder { Files.writeString(outputDirectory.resolve("posts.rss"), Feed.generateRss(site, posts)); - if (renderOptions.compress()) { + if (!renderOptions.compress().isEmpty()) { System.out.println("Compressing..."); compressOutput(); } @@ -191,10 +190,9 @@ public class BlogBuilder { } private void compressOutput() throws IOException { - var compressors = new FileCompressor[] { - new FileCompressor(CompressorStreamFactory.GZIP), - new FileCompressor(CompressorStreamFactory.ZSTANDARD) - }; + var compressors = renderOptions.compress().stream() + .map(FileCompressor::new) + .toList(); Set tree; try (var walk = Files.walk(outputDirectory)) { diff --git a/src/main/java/eu/m724/blog/data/RenderOptions.java b/src/main/java/eu/m724/blog/data/RenderOptions.java index 1b562bc..3f093dd 100644 --- a/src/main/java/eu/m724/blog/data/RenderOptions.java +++ b/src/main/java/eu/m724/blog/data/RenderOptions.java @@ -6,10 +6,12 @@ import org.snakeyaml.engine.v2.api.LoadSettings; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; import java.util.Map; public record RenderOptions( - boolean compress + List compress // TODO rename? ) { /** * Creates a {@link Site} object by reading and parsing the configuration file at the specified path.
@@ -23,14 +25,14 @@ public record RenderOptions( var load = new Load(LoadSettings.builder().build()); var yaml = (Map) load.loadFromInputStream(Files.newInputStream(path)); - boolean compress = true; + List compress = new ArrayList<>(); for (var key : yaml.keySet()) { var value = yaml.get(key); switch (key) { case "compress": { - compress = (boolean) value; + compress = (List) value; } default: { System.out.println("Unrecognized option (render): " + key);