Skip to content

Commit 3056857

Browse files
committed
Introduce substitutions for previous versions
1 parent 2feb57e commit 3056857

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

docs/syntax/substitutions.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,9 @@ id:
236236
```
237237
238238
A shorthand format is also available. Using `{{.id}}` is equivalent to `{{product.id}}`.
239+
240+
## Previous stack version
241+
242+
Products with a matching legacy URL mapping can access their previous version:
243+
244+
Example: `{{version.stack.previous}}` produces {{version.stack.previous}}.

src/Elastic.Documentation.Configuration/BuildContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public BuildContext(
110110
DocumentationSourceDirectory = ConfigurationPath.Directory!;
111111

112112
Git = gitCheckoutInformation ?? GitCheckoutInformation.Create(DocumentationCheckoutDirectory, ReadFileSystem);
113-
Configuration = new ConfigurationFile(this, VersionsConfiguration, ProductsConfiguration);
113+
Configuration = new ConfigurationFile(this, VersionsConfiguration, ProductsConfiguration, LegacyUrlMappings);
114114
GoogleTagManager = new GoogleTagManagerConfiguration
115115
{
116116
Enabled = false

src/Elastic.Documentation.Configuration/Builder/ConfigurationFile.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Elastic.Documentation.Configuration.Suggestions;
99
using Elastic.Documentation.Configuration.TableOfContents;
1010
using Elastic.Documentation.Configuration.Versions;
11+
using Elastic.Documentation.Configuration.LegacyUrlMappings;
1112
using Elastic.Documentation.Links;
1213
using Elastic.Documentation.Navigation;
1314
using YamlDotNet.RepresentationModel;
@@ -63,7 +64,7 @@ public record ConfigurationFile : ITableOfContentsScope
6364
Project is not null
6465
&& Project.Equals("Elastic documentation", StringComparison.OrdinalIgnoreCase);
6566

66-
public ConfigurationFile(IDocumentationSetContext context, VersionsConfiguration versionsConfig, ProductsConfiguration productsConfig)
67+
public ConfigurationFile(IDocumentationSetContext context, VersionsConfiguration versionsConfig, ProductsConfiguration productsConfig, LegacyUrlMappingConfiguration legacyUrlMappingsConfig)
6768
{
6869
_context = context;
6970
ScopeDirectory = context.ConfigurationPath.Directory!;
@@ -167,16 +168,21 @@ public ConfigurationFile(IDocumentationSetContext context, VersionsConfiguration
167168
}
168169
}
169170

170-
foreach (var (id, system) in versionsConfig.VersioningSystems)
171+
foreach (var (id, system, previousVersion) in
172+
versionsConfig.VersioningSystems.Select(kvp =>
173+
(kvp.Key, kvp.Value,
174+
legacyUrlMappingsConfig.Mappings.FirstOrDefault(m =>
175+
m.Product.VersioningSystem == kvp.Value)?.LegacyVersions.FirstOrDefault() ?? string.Empty)))
171176
{
172177
var name = id.ToStringFast(true);
173178
var alternativeName = name.Replace('-', '_');
174179
_substitutions[$"version.{name}"] = system.Current;
175180
_substitutions[$"version.{alternativeName}"] = system.Current;
176181
_substitutions[$"version.{name}.base"] = system.Base;
177182
_substitutions[$"version.{alternativeName}.base"] = system.Base;
183+
_substitutions[$"version.{name}.previous"] = previousVersion;
184+
_substitutions[$"version.{alternativeName}.previous"] = previousVersion;
178185
}
179-
180186
foreach (var product in productsConfig.Products.Values)
181187
{
182188
var alternativeProductId = product.Id.Replace('-', '_');

0 commit comments

Comments
 (0)