-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathBundle.cs
More file actions
90 lines (84 loc) · 3.02 KB
/
Bundle.cs
File metadata and controls
90 lines (84 loc) · 3.02 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// 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
using YamlDotNet.Serialization;
namespace Elastic.Documentation.Configuration.ReleaseNotes;
/// <summary>
/// DTO for YAML serialization of bundled changelog data.
/// Maps directly to the bundle YAML file structure.
/// </summary>
public sealed record BundleDto
{
public List<BundledProductDto>? Products { get; set; }
/// <summary>
/// Optional introductory description text for this bundle.
/// </summary>
public string? Description { get; set; }
/// <summary>
/// Optional release date for this bundle.
/// Purely informative; rendered after the release heading.
/// </summary>
[YamlMember(Alias = "release-date", ApplyNamingConventions = false)]
public string? ReleaseDate { get; set; }
/// <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>
[YamlMember(Alias = "show-release-dates", ApplyNamingConventions = false)]
public bool? ShowReleaseDates { get; set; }
/// <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>
[YamlMember(Alias = "hide-features", ApplyNamingConventions = false)]
public List<string>? HideFeatures { get; set; }
public List<BundledEntryDto>? Entries { get; set; }
}
/// <summary>
/// DTO for bundled product info in YAML.
/// </summary>
public sealed record BundledProductDto
{
public string? Product { get; set; }
public string? Target { get; set; }
public string? Lifecycle { get; set; }
/// <summary>
/// GitHub repository name for generating PR/issue links.
/// If not specified, falls back to Product ID.
/// </summary>
public string? Repo { get; set; }
/// <summary>
/// GitHub owner (organization or user) for generating PR/issue links.
/// If not specified, defaults to "elastic".
/// </summary>
public string? Owner { get; set; }
}
/// <summary>
/// DTO for bundled entry in YAML.
/// </summary>
public sealed record BundledEntryDto
{
public BundledFileDto? File { get; set; }
public string? Type { get; set; }
public string? Title { get; set; }
public List<ProductInfoDto>? Products { get; set; }
public string? Description { get; set; }
public string? Impact { get; set; }
public string? Action { get; set; }
[YamlMember(Alias = "feature-id", ApplyNamingConventions = false)]
public string? FeatureId { get; set; }
public bool? Highlight { get; set; }
public string? Subtype { get; set; }
public List<string>? Areas { get; set; }
public string? Pr { get; set; }
public List<string>? Prs { get; set; }
public List<string>? Issues { get; set; }
}
/// <summary>
/// DTO for bundled file info in YAML.
/// </summary>
public sealed record BundledFileDto
{
public string? Name { get; set; }
public string? Checksum { get; set; }
}