29 protected static void RenderFile(AbsolutePath templateRoot, RelativePath source, AbsolutePath destinationFolder,
object model)
31 var relFileTemplate = Template.Parse(source, templateRoot / source);
32 CheckErrors(relFileTemplate);
34 var textTemplate = Template.Parse(File.ReadAllText(templateRoot / source), templateRoot / source);
35 CheckErrors(textTemplate);
37 var renderedRelFilePath = relFileTemplate.Render(model);
38 var renderedText = textTemplate.Render(model);
40 var resultPath = destinationFolder / renderedRelFilePath;
41 var resultFilename = Path.GetFileNameWithoutExtension(resultPath);
42 var resultExt = Path.GetExtension(resultPath).Replace(
"sbn",
"");
44 if(!Directory.Exists(resultPath.Parent))
45 Directory.CreateDirectory(resultPath.Parent);
47 resultFilename = (resultFilename + resultExt).Replace(
"___",
"");
49 var outPath = resultPath.Parent / resultFilename;
51 Log.Debug($
"Rendering to: {resultFilename}");
53 File.WriteAllText(outPath, renderedText);
63 protected static void RenderFolder(AbsolutePath templateRoot, AbsolutePath destinationFolder,
object model, AbsolutePath? currentFolder =
null)
65 currentFolder ??= templateRoot;
66 foreach(var file
in Directory.EnumerateFiles(currentFolder))
68 var relPath = (RelativePath) Path.GetRelativePath(templateRoot, file);
69 RenderFile(templateRoot, relPath, destinationFolder, model);
72 foreach(var dir
in Directory.EnumerateDirectories(currentFolder))
74 RenderFolder(templateRoot, destinationFolder, model, (AbsolutePath) dir);