-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathBundle.cs
More file actions
47 lines (39 loc) · 1.85 KB
/
Bundle.cs
File metadata and controls
47 lines (39 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information
namespace Elastic.Documentation.ReleaseNotes;
/// <summary>
/// Domain type representing bundled changelog data.
/// Contains products and entries for a changelog bundle.
/// </summary>
public record Bundle
{
/// <summary>Products included in this bundle.</summary>
public IReadOnlyList<BundledProduct> Products { get; init; } = [];
/// <summary>
/// Optional introductory description text for this bundle.
/// Rendered as introductory content after the release heading.
/// </summary>
public string? Description { get; init; }
/// <summary>
/// Optional release date for this bundle.
/// Purely informative for end-users; rendered after the release heading.
/// Useful for components released outside the usual stack lifecycle (e.g., APM/EDOT agents).
/// Parsed from YYYY-MM-DD format in YAML; serialized back as YYYY-MM-DD.
/// </summary>
public DateOnly? ReleaseDate { get; init; }
/// <summary>
/// Whether to show release dates in rendered changelog output for this bundle.
/// When true, the ReleaseDate field (if present) will be displayed as "Released: date" text.
/// </summary>
public bool ShowReleaseDates { get; init; }
/// <summary>
/// Feature IDs that should be hidden when rendering this bundle.
/// Entries with matching feature-id values will be commented out in the output.
/// </summary>
public IReadOnlyList<string> HideFeatures { get; init; } = [];
/// <summary>Changelog entries in this bundle.</summary>
public IReadOnlyList<BundledEntry> Entries { get; init; } = [];
/// <summary>Whether entries in this bundle have their contents resolved (inlined).</summary>
public bool IsResolved => Entries.Any(e => e.Title != null);
}