From bafe762ac01d16904c18404283027e426e19bc73 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 3 Feb 2021 16:35:48 +0100 Subject: Code reorganization. Moving main code to src, keeping modules in modules/ --- .../rules/engine/JinjavaTemplateEngine.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/ri-engine/src/main/java/io/trygvis/rules/engine/JinjavaTemplateEngine.java (limited to 'src/ri-engine/src/main/java/io/trygvis/rules/engine/JinjavaTemplateEngine.java') diff --git a/src/ri-engine/src/main/java/io/trygvis/rules/engine/JinjavaTemplateEngine.java b/src/ri-engine/src/main/java/io/trygvis/rules/engine/JinjavaTemplateEngine.java new file mode 100644 index 0000000..ba23089 --- /dev/null +++ b/src/ri-engine/src/main/java/io/trygvis/rules/engine/JinjavaTemplateEngine.java @@ -0,0 +1,51 @@ +package io.trygvis.rules.engine; + +import ch.qos.logback.core.util.FileUtil; +import com.hubspot.jinjava.Jinjava; +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.Map; +import java.util.Objects; + +/** + * TODO: cache templates. + */ +public class JinjavaTemplateEngine implements TemplateEngine { + private final Logger logger = LoggerFactory.getLogger(getClass()); + + private final Jinjava jinjava = new Jinjava(); + + private final TemplateLoader loader; + private final File basedir; + + public JinjavaTemplateEngine(TemplateLoader templateLoader, File basedir) { + Objects.requireNonNull(templateLoader); + Objects.requireNonNull(basedir); + this.loader = templateLoader; + this.basedir = basedir; + } + + @Override + public void clean() { + try { + logger.info("Removing output directory: {}", basedir); + FileUtils.deleteDirectory(basedir); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void template(String name, String output, Map params) throws IOException { + var template = loader.load(name); + String renderedTemplate = jinjava.render(template, params); + var f = new File(basedir, output); + FileUtil.createMissingParentDirectories(f); + Files.writeString(f.toPath(), renderedTemplate); + } +} -- cgit v1.2.3