TemplateAdapterSupport.java
package com.cloudforge.core.local;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
/** File-based helpers for {@link TemplateAdapter} implementations. */
public final class TemplateAdapterSupport {
private static final ObjectMapper MAPPER = new ObjectMapper();
private TemplateAdapterSupport() {
}
public static TemplateAdaptationResult adaptFile(
TemplateAdapter adapter,
Path canonicalTemplate,
Path localTemplate,
Path report,
String stackName) throws IOException {
ObjectNode canonical = (ObjectNode) MAPPER.readTree(canonicalTemplate.toFile());
TemplateAdaptationResult result = adapter.adapt(canonical, stackName);
Files.createDirectories(localTemplate.toAbsolutePath().getParent());
MAPPER.writerWithDefaultPrettyPrinter().writeValue(localTemplate.toFile(), result.template());
MAPPER.writerWithDefaultPrettyPrinter().writeValue(report.toFile(), result.adaptations());
return result;
}
}