Skip to content

Commit 2992156

Browse files
committed
Add specific diagnostic/status for oss authors
When we added the new oss role, we didn't accomodate that scenario in the analyzer sample.
1 parent b978668 commit 2992156

5 files changed

Lines changed: 44 additions & 2 deletions

File tree

samples/dotnet/SponsorLink/DiagnosticsManager.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ class DiagnosticsManager
3030
{ SponsorStatus.Unknown, CreateUnknown([.. Sponsorables.Keys], Funding.Product, Funding.Prefix) },
3131
{ SponsorStatus.Grace, CreateGrace([.. Sponsorables.Keys], Funding.Product, Funding.Prefix) },
3232
{ SponsorStatus.User, CreateSponsor([.. Sponsorables.Keys], Funding.Prefix) },
33-
{ SponsorStatus.Contributor, CreateContributor([.. Sponsorables.Keys], Funding.Prefix) },
33+
{ SponsorStatus.Contributor, CreateContributor([.. Sponsorables.Keys], Funding.Prefix, hidden: true) },
34+
// NOTE: similar to contributor, we don't show OSS author membership in the IDE.
35+
{ SponsorStatus.OpenSource, CreateOpenSource([.. Sponsorables.Keys], Funding.Prefix) },
3436
// NOTE: organization is a special case of sponsor, but we report it as hidden since the user isn't directly involved.
3537
{ SponsorStatus.Organization, CreateSponsor([.. Sponsorables.Keys], Funding.Prefix, hidden: true) },
3638
// NOTE: similar to organization, we don't show team membership in the IDE.
@@ -192,6 +194,8 @@ SponsorStatus GetOrSetStatus(Func<ImmutableArray<AdditionalText>> getAdditionalF
192194
SponsorStatus.Contributor :
193195
claims.IsInRole("org") ?
194196
SponsorStatus.Organization :
197+
claims.IsInRole("oss") ?
198+
SponsorStatus.OpenSource :
195199
SponsorStatus.Unknown;
196200

197201
if (KnownDescriptors.TryGetValue(status, out var descriptor))
@@ -284,4 +288,15 @@ SponsorStatus GetOrSetStatus(Func<ImmutableArray<AdditionalText>> getAdditionalF
284288
description: Resources.Contributor_Description,
285289
helpLinkUri: Funding.HelpUrl,
286290
"DoesNotSupportF1Help", "CompilationEnd");
291+
292+
internal static DiagnosticDescriptor CreateOpenSource(string[] sponsorable, string prefix, bool hidden = false) => new(
293+
$"{prefix}112",
294+
Resources.OpenSource_Title,
295+
Resources.OpenSource_Message,
296+
"SponsorLink",
297+
hidden ? DiagnosticSeverity.Hidden : DiagnosticSeverity.Info,
298+
isEnabledByDefault: true,
299+
description: Resources.OpenSource_Description,
300+
helpLinkUri: Funding.HelpUrl,
301+
"DoesNotSupportF1Help", "CompilationEnd");
287302
}

samples/dotnet/SponsorLink/Resources.es.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,4 +212,13 @@ Por favor considera apoyar el proyecto patrocinando en {0} y ejecutando posterio
212212
/// ¡Gracias! 🙏
213213
/// &lt;/remarks&gt;</value>
214214
</data>
215+
<data name="OpenSource_Description" xml:space="preserve">
216+
<value>Gracias por ser parte de la comunidad de código abierto con tus contribuciones 🙏.</value>
217+
</data>
218+
<data name="OpenSource_Message" xml:space="preserve">
219+
<value>Gracias por ser autor de código abierto 💟!</value>
220+
</data>
221+
<data name="OpenSource_Title" xml:space="preserve">
222+
<value>Sos un autor de código abierto, eres lo máximo 💟!</value>
223+
</data>
215224
</root>

samples/dotnet/SponsorLink/Resources.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,4 +216,13 @@ Please consider supporting the project by sponsoring at {0} and running 'sponsor
216216
/// Thanks! 🙏
217217
/// &lt;/remarks&gt;</value>
218218
</data>
219+
<data name="OpenSource_Description" xml:space="preserve">
220+
<value>Thanks for being part of the open source community with your contributions 🙏.</value>
221+
</data>
222+
<data name="OpenSource_Message" xml:space="preserve">
223+
<value>Thank you for being an open source author 💟!</value>
224+
</data>
225+
<data name="OpenSource_Title" xml:space="preserve">
226+
<value>You are a an open source author, you rock 💟!</value>
227+
</data>
219228
</root>

samples/dotnet/SponsorLink/SponsorStatus.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,9 @@ public enum SponsorStatus
4949
/// <summary>
5050
/// The user is a member of a contributing organization.
5151
/// </summary>
52-
Organization
52+
Organization,
53+
/// <summary>
54+
/// The user is a OSS author.
55+
/// </summary>
56+
OpenSource,
5357
}

samples/dotnet/Tests/AnalyzerTests.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ public async Task WhenUnknownAndGraceExpired_ThenReportsUnknown()
160160
[InlineData("org,contrib", SponsorStatus.Contributor)]
161161
// team trumps contrib (since team members will typically also be contributors
162162
[InlineData("contrib,team", SponsorStatus.Team)]
163+
[InlineData("contrib,oss", SponsorStatus.Contributor)]
164+
[InlineData("user,oss", SponsorStatus.User)]
165+
[InlineData("org,oss", SponsorStatus.Organization)]
166+
[InlineData("oss", SponsorStatus.OpenSource)]
163167
public async Task WhenSponsoringRole_ThenEnsureStatus(string roles, SponsorStatus status)
164168
{
165169
var sponsor = sponsorable.Sign(roles.Split(',').Select(x => new Claim("roles", x)), expiration: TimeSpan.FromMinutes(5));
@@ -202,6 +206,7 @@ public async Task WhenMultipleAnalyzers_ThenReportsOnce()
202206
// Simulate directly referenced package
203207
{ "build_property.SponsorableLib", "1.0.0" },
204208
{ "build_property.SponsorLink", "1.0.0" },
209+
{ "build_metadata.SponsorManifest.ItemType", "SponsorManifest" }
205210
}));
206211

207212
var diagnostics = (await compilation.GetAnalyzerDiagnosticsAsync())

0 commit comments

Comments
 (0)