static void ApplyTemplate(ApiModel item, string outputDirectory, TemplateEngine templateEngine, string templateName) { var outputPath = Path.Combine(outputDirectory, TemplateCallbacks.GetApiClassName(item) + ".cs"); if (File.Exists(outputPath)) { File.Delete(outputPath); } File.WriteAllText(outputPath, templateEngine.ApplyByName(templateName, item)); }
static void RunGenerator(ApiModel api, Configuration configuration) { var templateDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Templates"); var templateEngine = new TemplateEngine(new[] { templateDirectory }); templateEngine.RegisterCallback("ApiNamespace", (e, s) => api.Name); templateEngine.RegisterCallback("ApiName", (e, s) => TemplateCallbacks.GetApiClassName(api)); templateEngine.RegisterCallback("ApiDll", (e, s) => TemplateCallbacks.GetApiDllName(api)); templateEngine.RegisterCallbacks(typeof(TemplateCallbacks)); var outputDirectory = configuration.GeneratorOutputPath; if (!Directory.Exists(outputDirectory)) { Directory.CreateDirectory(outputDirectory); } ApplyTemplate(api, outputDirectory, templateEngine, "Api"); ApplyTemplate(api.Enumerations, outputDirectory, templateEngine, "Enumeration"); ApplyTemplate(api.Structures, outputDirectory, templateEngine, "Structure"); ApplyTemplate(api.Interfaces, outputDirectory, templateEngine, "Interface"); BuildTrampolineAssembly(api, outputDirectory, string.Format("{0}.Trampoline", api.Name)); }