From 8b3d9720a1bbd998acb19fa952f129c6b305bb20 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Tue, 15 Apr 2025 09:17:07 +0200 Subject: [PATCH] Add lastmod and ensure we also add DocumentationGroup navigation items --- src/docs-assembler/Building/SitemapBuilder.cs | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/docs-assembler/Building/SitemapBuilder.cs b/src/docs-assembler/Building/SitemapBuilder.cs index 703850427..34281391a 100644 --- a/src/docs-assembler/Building/SitemapBuilder.cs +++ b/src/docs-assembler/Building/SitemapBuilder.cs @@ -8,22 +8,24 @@ namespace Documentation.Assembler.Building; -public class SitemapBuilder(IReadOnlyCollection navigationItems, IFileSystem fileSystem, IDirectoryInfo outputFolder) +public class SitemapBuilder( + IReadOnlyCollection navigationItems, + IFileSystem fileSystem, + IDirectoryInfo outputFolder +) { private static readonly Uri BaseUri = new("https://www.elastic.co"); - private readonly IReadOnlyCollection _navigationItems = navigationItems; - private readonly IFileSystem _fileSystem = fileSystem; - private readonly IDirectoryInfo _outputFolder = outputFolder; public void Generate() { - var flattenedNavigationItems = GetNavigationItems(_navigationItems); + var flattenedNavigationItems = GetNavigationItems(navigationItems); var doc = new XDocument() { Declaration = new XDeclaration("1.0", "utf-8", "yes"), }; + var currentDate = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:sszzz"); var root = new XElement( "urlset", new XAttribute("xlmns", "http://www.sitemaps.org/schemas/sitemap/0.9"), @@ -32,12 +34,15 @@ public void Generate() .Select(n => n.File.Url) .Distinct() .Select(u => new Uri(BaseUri, u)) - .Select(u => new XElement("url", new XElement("loc", u))) + .Select(u => new XElement("url", [ + new XElement("loc", u), + new XElement("lastmod", currentDate) + ])) ); doc.Add(root); - using var fileStream = _fileSystem.File.Create(Path.Combine(_outputFolder.ToString() ?? string.Empty, "docs", "sitemap.xml")); + using var fileStream = fileSystem.File.Create(Path.Combine(outputFolder.ToString() ?? string.Empty, "docs", "sitemap.xml")); doc.Save(fileStream); } @@ -54,6 +59,9 @@ private static IReadOnlyCollection GetNavigationItems(IReadOnly case GroupNavigationItem group: result.AddRange(GetNavigationItems(group.Group.NavigationItems)); break; + case DocumentationGroup group: + result.AddRange(GetNavigationItems(group.NavigationItems)); + break; } } return result;