diff --git a/Pipeline/Build.Pages.cs b/Pipeline/Build.Pages.cs index 381cebfbc..99e3f1f65 100644 --- a/Pipeline/Build.Pages.cs +++ b/Pipeline/Build.Pages.cs @@ -61,6 +61,23 @@ async Task DownloadDocsPagesDirectory(string projectName, string directoryName) try { + HttpResponseMessage readmeResponse = + await client.GetAsync( + $"https://api.github.com/repos/aweXpect/{projectName}/contents/README.md"); + string readmeResponseContent = await readmeResponse.Content.ReadAsStringAsync(); + using JsonDocument readmeDocument = JsonDocument.Parse(readmeResponseContent); + string readmeContent = Base64Decode(readmeDocument.RootElement.GetProperty("content").GetString()); + int indexOfFirstH2Header = readmeContent.IndexOf("\n##", StringComparison.Ordinal); + if (indexOfFirstH2Header > 0) + { + readmeContent = readmeContent.Substring(indexOfFirstH2Header); + Log.Information($" Skip {indexOfFirstH2Header} characters in README.md"); + } + else + { + readmeContent = string.Empty; + } + JsonDocument jsonDocument = JsonDocument.Parse(responseContent); foreach (JsonElement file in jsonDocument.RootElement.EnumerateArray()) { @@ -72,6 +89,13 @@ await client.GetAsync( string fileResponseContent = await fileResponse.Content.ReadAsStringAsync(); using JsonDocument document = JsonDocument.Parse(fileResponseContent); string content = Base64Decode(document.RootElement.GetProperty("content").GetString()); + if (name.StartsWith("00-") && content.Contains("{README}", StringComparison.OrdinalIgnoreCase)) + { + content = content.Replace("{README}", readmeContent.Replace("Docs/pages/", "./")); + readmeContent = string.Empty; + Log.Information($" Replace \"{{README}}\" with content from README.md for {name}"); + } + await File.WriteAllTextAsync(filePath, content); Log.Information($" {name} under {filePath}"); }