Skip to content

Commit e2234fd

Browse files
committed
Output redirects.json artifact
1 parent afcce69 commit e2234fd

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/Elastic.Documentation/Serialization/SourceGenerationContext.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
33
// See the LICENSE file in the project root for more information
44

5+
using System.Collections.Frozen;
56
using System.Text.Json.Serialization;
67
using Elastic.Documentation.Links;
78
using Elastic.Documentation.Search;
@@ -18,4 +19,5 @@ namespace Elastic.Documentation.Serialization;
1819
[JsonSerializable(typeof(LinkRegistry))]
1920
[JsonSerializable(typeof(LinkRegistryEntry))]
2021
[JsonSerializable(typeof(DocumentationDocument))]
22+
[JsonSerializable(typeof(FrozenDictionary<string, string>))]
2123
public sealed partial class SourceGenerationContext : JsonSerializerContext;

src/tooling/docs-assembler/Building/AssemblerBuilder.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
// See the LICENSE file in the project root for more information
44

55
using System.Collections.Frozen;
6+
using System.Text.Json;
67
using Documentation.Assembler.Exporters;
78
using Documentation.Assembler.Navigation;
89
using Elastic.Documentation.Legacy;
910
using Elastic.Documentation.Links;
11+
using Elastic.Documentation.Serialization;
1012
using Elastic.Markdown;
1113
using Elastic.Markdown.Exporters;
1214
using Elastic.Markdown.Links.CrossLinks;
@@ -85,6 +87,8 @@ public async Task BuildAllAsync(FrozenDictionary<string, AssemblerDocumentationS
8587
}
8688
}
8789

90+
await OutputRedirectsAsync(redirects, ctx);
91+
8892
tasks = markdownExporters.Select(async e => await e.StopAsync(ctx));
8993
await Task.WhenAll(tasks);
9094
}
@@ -143,4 +147,16 @@ private void SetFeatureFlags(AssemblerDocumentationSet set)
143147
set.DocumentationSet.Configuration.Features.Set(configurationFeatureFlag.Key, configurationFeatureFlag.Value);
144148
}
145149
}
150+
151+
private async Task OutputRedirectsAsync(Dictionary<string, string> redirects, Cancel ctx)
152+
{
153+
var uniqueRedirects = redirects
154+
.Where(x => !x.Key.TrimEnd('/').Equals(x.Value.TrimEnd('/')))
155+
.ToFrozenDictionary();
156+
var redirectsFile = context.WriteFileSystem.FileInfo.New(Path.Combine(context.OutputDirectory.FullName, "redirects.json"));
157+
_logger.LogInformation("Writing {Count} resolved redirects to {Path}", uniqueRedirects.Count, redirectsFile.FullName);
158+
159+
var redirectsJson = JsonSerializer.Serialize(uniqueRedirects, SourceGenerationContext.Default.FrozenDictionaryStringString);
160+
await context.WriteFileSystem.File.WriteAllTextAsync(redirectsFile.FullName, redirectsJson, ctx);
161+
}
146162
}

0 commit comments

Comments
 (0)