package io.trygvis.rules.engine; import ch.qos.logback.core.util.FileUtil; import com.hubspot.jinjava.Jinjava; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Map; /** * TODO: cache templates. */ public class JinjavaTemplateEngine implements TemplateEngine { private final Jinjava jinjava = new Jinjava(); private final TemplateLoader loader; private final File basedir; public JinjavaTemplateEngine(TemplateLoader templateLoader, File basedir) { this.loader = templateLoader; this.basedir = basedir; } @Override public void clean() { try { System.out.println("Cleaning gen!"); 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); } }