protected void ConvertChangelogToHtml(Settings settings, ReleaseHistory releaseHistory) { Log($"Writing HTML changelog to {settings.HtmlChangeLogFileName}"); string changelogBody; using (var reader = new StreamReader(settings.MarkdownChangeLogFileName)) using (var writer = new StringWriter()) { CommonMark.CommonMarkConverter.Convert(reader, writer); changelogBody = writer.ToString(); } var html = $@"<html> <head> <title>{settings.ProductName} {releaseHistory.CurrentVersion}</title> <link rel='stylesheet' href='http://fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic' /> <link rel='stylesheet' href='http://cdn.rawgit.com/necolas/normalize.css/master/normalize.css' /> <link rel='stylesheet' href='http://cdn.rawgit.com/milligram/milligram/master/dist/milligram.min.css' /> </head> <body> <!-- DO NOT EDIT THIS FILE! It is automatically generated and your changes will be lost when the next release is made --> <div class='container'> {changelogBody} </div> </body> </html>"; File.WriteAllText(settings.HtmlChangeLogFileName, html); }
protected void WriteChangelog(Settings settings, ReleaseHistory releaseHistory) { Log($"Writing Markdown changelog to {settings.MarkdownChangeLogFileName}"); var changeLog = GenerateChangelog(settings, releaseHistory); File.WriteAllText(settings.MarkdownChangeLogFileName, changeLog); }
protected ReleaseHistory ReadReleaseHistory(Settings settings) { if (!File.Exists(settings.ReleaseHistoryFileName)) { return(ReleaseHistory.Default(settings.ProductName)); } var releaseHistoryJson = File.ReadAllText(settings.ReleaseHistoryFileName); var releaseHistory = JsonConvert.DeserializeObject <ReleaseHistory>(releaseHistoryJson) ?? ReleaseHistory.Default(settings.ProductName); return(releaseHistory.WithProductName(settings.ProductName)); }
protected void WriteReleaseHistory(Settings settings, ReleaseHistory releaseHistory) { Log($"Writing JSON release history to {settings.ReleaseHistoryFileName}"); var releaseHistoryJson = JsonConvert.SerializeObject(releaseHistory, new JsonSerializerSettings { ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() }, Formatting = Formatting.Indented }); File.WriteAllText(settings.ReleaseHistoryFileName, releaseHistoryJson); }
protected string GenerateChangelog(Settings settings, ReleaseHistory releaseHistory) { var format = $@"# {{{{ProductName}}}} {{{{CurrentVersion}}}}{{{{#newline}}}} {{{{#newline}}}} {{{{#each Releases}}}}{{{{#newline}}}} ## {{{{Version}}}}{{{{#newline}}}} {{{{#each Changes}}}}{{{{#newline}}}} * **{{{{TypeDescription}}}}**: {{{{Description}}}} {{{{/each}}}}{{{{#newline}}}} {{{{/each}}}}"; var compiler = new FormatCompiler(); var generator = compiler.Compile(format); return(generator.Render(releaseHistory)); }
protected void WriteVersionFile(Settings settings, ReleaseHistory releaseHistory) { File.WriteAllText(settings.VersionFileName, releaseHistory.CurrentVersion.HasValue ? releaseHistory.CurrentVersion.Value.ToString() : null); }