Skip to content

Commit 2e5370f

Browse files
committed
emit hints for obsolete lifecycles so we don't trip up --strict builds
1 parent cecd040 commit 2e5370f

File tree

10 files changed

+82
-74
lines changed

10 files changed

+82
-74
lines changed

.github/workflows/preview-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ jobs:
200200
with:
201201
prefix: ${{ env.PATH_PREFIX }}
202202
strict: ${{ fromJSON(inputs.strict != '' && inputs.strict || 'true') }}
203-
metadata-only: ${{ fromJSON(inputs.metadata-only != '' && inputs.metadata-only || 'true') }}
203+
metadata-only: ${{ fromJSON(inputs.metadata-only != '' && inputs.metadata-only || 'false') }}
204204

205205
- name: 'Validate inbound links'
206206
if: |

src/Elastic.Documentation/Diagnostics/DiagnosticsCollector.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public void Write(Diagnostic diagnostic)
102102
Channel.Write(diagnostic);
103103
}
104104

105-
private void Emit(Severity severity, string file, string message) =>
105+
public void Emit(Severity severity, string file, string message) =>
106106
Write(new Diagnostic
107107
{
108108
Severity = severity,

src/Elastic.Documentation/Diagnostics/IDiagnosticsCollector.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public interface IDiagnosticsCollector : IAsyncDisposable
1717
HashSet<string> OffendingFiles { get; }
1818
ConcurrentDictionary<string, bool> InUseSubstitutionKeys { get; }
1919

20+
void Emit(Severity severity, string file, string message);
2021
void EmitError(string file, string message, Exception? e = null);
2122
void EmitWarning(string file, string message);
2223
void EmitHint(string file, string message);
@@ -27,6 +28,10 @@ public interface IDiagnosticsCollector : IAsyncDisposable
2728

2829
public static class DiagnosticsCollectorExtensions
2930
{
31+
32+
public static void Emit(this IDiagnosticsCollector collector, Severity severity, IFileInfo file, string message) =>
33+
collector.Emit(severity, file.FullName, message);
34+
3035
public static void EmitError(this IDiagnosticsCollector collector, IFileInfo file, string message, Exception? e = null) =>
3136
collector.EmitError(file.FullName, message, e);
3237

src/Elastic.Markdown/Diagnostics/ProcessorDiagnosticExtensions.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ public static void EmitWarning(this ParserContext context, int line, int column,
7878
context.Build.Collector.Write(d);
7979
}
8080

81-
public static void EmitError(this IBlockExtension block, string message, Exception? e = null) => EmitDiagnostic(block, Severity.Error, message, e);
81+
public static void EmitError(this IBlockExtension block, string message, Exception? e = null) => Emit(block, Severity.Error, message, e);
8282

83-
public static void EmitWarning(this IBlockExtension block, string message) => EmitDiagnostic(block, Severity.Warning, message);
83+
public static void EmitWarning(this IBlockExtension block, string message) => Emit(block, Severity.Warning, message);
8484

85-
public static void EmitHint(this IBlockExtension block, string message) => EmitDiagnostic(block, Severity.Hint, message);
85+
public static void EmitHint(this IBlockExtension block, string message) => Emit(block, Severity.Hint, message);
8686

87-
private static void EmitDiagnostic(IBlockExtension block, Severity severity, string message, Exception? e = null)
87+
public static void Emit(this IBlockExtension block, Severity severity, string message, Exception? e = null)
8888
{
8989
if (block.SkipValidation)
9090
return;
@@ -102,7 +102,7 @@ private static void EmitDiagnostic(IBlockExtension block, Severity severity, str
102102
}
103103

104104

105-
private static void LinkDiagnostic(InlineProcessor processor, Severity severity, Inline inline, int length, string message, Exception? e = null)
105+
public static void Emit(this InlineProcessor processor, Severity severity, Inline inline, int length, string message, Exception? e = null)
106106
{
107107
var line = inline.Line + 1;
108108
var column = inline.Column;
@@ -123,20 +123,20 @@ private static void LinkDiagnostic(InlineProcessor processor, Severity severity,
123123
}
124124

125125
public static void EmitError(this InlineProcessor processor, LinkInline inline, string message) =>
126-
LinkDiagnostic(processor, Severity.Error, inline, inline.Url?.Length ?? 1, message);
126+
Emit(processor, Severity.Error, inline, inline.Url?.Length ?? 1, message);
127127

128128
public static void EmitWarning(this InlineProcessor processor, LinkInline inline, string message) =>
129-
LinkDiagnostic(processor, Severity.Warning, inline, inline.Url?.Length ?? 1, message);
129+
Emit(processor, Severity.Warning, inline, inline.Url?.Length ?? 1, message);
130130

131131
public static void EmitHint(this InlineProcessor processor, LinkInline inline, string message) =>
132-
LinkDiagnostic(processor, Severity.Hint, inline, inline.Url?.Length ?? 1, message);
132+
Emit(processor, Severity.Hint, inline, inline.Url?.Length ?? 1, message);
133133

134134
public static void EmitError(this InlineProcessor processor, Inline inline, int length, string message, Exception? e = null) =>
135-
LinkDiagnostic(processor, Severity.Error, inline, length, message, e);
135+
Emit(processor, Severity.Error, inline, length, message, e);
136136

137137
public static void EmitWarning(this InlineProcessor processor, Inline inline, int length, string message) =>
138-
LinkDiagnostic(processor, Severity.Warning, inline, length, message);
138+
Emit(processor, Severity.Warning, inline, length, message);
139139

140140
public static void EmitHint(this InlineProcessor processor, Inline inline, int length, string message) =>
141-
LinkDiagnostic(processor, Severity.Hint, inline, length, message);
141+
Emit(processor, Severity.Hint, inline, length, message);
142142
}

src/Elastic.Markdown/IO/MarkdownFile.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -320,10 +320,10 @@ private YamlFrontMatter ProcessYamlFrontMatter(MarkdownDocument document)
320320
var raw = string.Join(Environment.NewLine, yaml.Lines.Lines);
321321
var fm = ReadYamlFrontMatter(raw);
322322

323-
if (fm.AppliesTo?.Warnings is not null)
323+
if (fm.AppliesTo?.Diagnostics is not null)
324324
{
325-
foreach (var warning in fm.AppliesTo.Warnings)
326-
Collector.EmitWarning(FilePath, warning);
325+
foreach (var (severity, message) in fm.AppliesTo.Diagnostics)
326+
Collector.Emit(severity, FilePath, message);
327327
}
328328

329329
// TODO remove when migration tool and our demo content sets are updated

src/Elastic.Markdown/Myst/CodeBlocks/EnhancedCodeBlockParser.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,11 @@ private static void ProcessAppliesToDirective(AppliesToDirective appliesToDirect
126126
{
127127
var applicableTo = YamlSerialization.Deserialize<ApplicableTo>(yaml);
128128
appliesToDirective.AppliesTo = applicableTo;
129-
if (appliesToDirective.AppliesTo.Warnings is null)
129+
if (appliesToDirective.AppliesTo.Diagnostics is null)
130130
return;
131-
foreach (var warning in appliesToDirective.AppliesTo.Warnings)
132-
appliesToDirective.EmitWarning(warning);
133-
applicableTo.Warnings = null;
131+
foreach (var (severity, message) in appliesToDirective.AppliesTo.Diagnostics)
132+
appliesToDirective.Emit(severity, message);
133+
applicableTo.Diagnostics = null;
134134
}
135135
catch (Exception e)
136136
{

src/Elastic.Markdown/Myst/FrontMatter/Applicability.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Diagnostics.CodeAnalysis;
77
using System.Text;
88
using Elastic.Documentation;
9+
using Elastic.Documentation.Diagnostics;
910
using YamlDotNet.Serialization;
1011

1112
namespace Elastic.Markdown.Myst.FrontMatter;
@@ -17,7 +18,7 @@ public record AppliesCollection : IReadOnlyCollection<Applicability>
1718
public AppliesCollection(Applicability[] items) => _items = items;
1819

1920
// <lifecycle> [version]
20-
public static bool TryParse(string? value, IList<string> warnings, out AppliesCollection? availability)
21+
public static bool TryParse(string? value, IList<(Severity, string)> diagnostics, out AppliesCollection? availability)
2122
{
2223
availability = null;
2324
if (string.IsNullOrWhiteSpace(value) || string.Equals(value.Trim(), "all", StringComparison.InvariantCultureIgnoreCase))
@@ -30,7 +31,7 @@ public static bool TryParse(string? value, IList<string> warnings, out AppliesCo
3031
var applications = new List<Applicability>(items.Length);
3132
foreach (var item in items)
3233
{
33-
if (Applicability.TryParse(item.Trim(), warnings, out var a))
34+
if (Applicability.TryParse(item.Trim(), diagnostics, out var a))
3435
applications.Add(a);
3536
}
3637

@@ -64,10 +65,10 @@ public override int GetHashCode()
6465

6566
public static explicit operator AppliesCollection(string b)
6667
{
67-
var warnings = new List<string>();
68-
var productAvailability = TryParse(b, warnings, out var version) ? version : null;
69-
if (warnings.Count > 0)
70-
throw new ArgumentException("Explicit conversion from string to AppliesCollection failed." + string.Join(Environment.NewLine, warnings));
68+
var diagnostics = new List<(Severity, string)>();
69+
var productAvailability = TryParse(b, diagnostics, out var version) ? version : null;
70+
if (diagnostics.Count > 0)
71+
throw new ArgumentException("Explicit conversion from string to AppliesCollection failed." + string.Join(Environment.NewLine, diagnostics));
7172
return productAvailability ?? throw new ArgumentException($"'{b}' is not a valid applicability string array.");
7273
}
7374

@@ -146,14 +147,14 @@ public override string ToString()
146147

147148
public static explicit operator Applicability(string b)
148149
{
149-
var warnings = new List<string>();
150-
var productAvailability = TryParse(b, warnings, out var version) ? version : TryParse(b + ".0", warnings, out version) ? version : null;
151-
if (warnings.Count > 0)
152-
throw new ArgumentException("Explicit conversion from string to AppliesCollection failed." + string.Join(Environment.NewLine, warnings));
150+
var diagnostics = new List<(Severity, string)>();
151+
var productAvailability = TryParse(b, diagnostics, out var version) ? version : TryParse(b + ".0", diagnostics, out version) ? version : null;
152+
if (diagnostics.Count > 0)
153+
throw new ArgumentException("Explicit conversion from string to AppliesCollection failed." + string.Join(Environment.NewLine, diagnostics));
153154
return productAvailability ?? throw new ArgumentException($"'{b}' is not a valid applicability string.");
154155
}
155156

156-
public static bool TryParse(string? value, IList<string> warnings, [NotNullWhen(true)] out Applicability? availability)
157+
public static bool TryParse(string? value, IList<(Severity, string)> diagnostics, [NotNullWhen(true)] out Applicability? availability)
157158
{
158159
if (string.IsNullOrWhiteSpace(value) || string.Equals(value.Trim(), "all", StringComparison.InvariantCultureIgnoreCase))
159160
{
@@ -188,7 +189,7 @@ public static bool TryParse(string? value, IList<string> warnings, [NotNullWhen(
188189
_ => throw new Exception($"Unknown product lifecycle: {tokens[0]}")
189190
};
190191
if (lifecycle is ProductLifecycle.Planned or ProductLifecycle.Deprecated or ProductLifecycle.Development)
191-
warnings.Add($"The '{lookup}' lifecycle is deprecated and will be removed in a future release.");
192+
diagnostics.Add((Severity.Hint, $"The '{lookup}' lifecycle is deprecated and will be removed in a future release."));
192193

193194
var version = tokens.Length < 2
194195
? null

0 commit comments

Comments
 (0)