Skip to content

Commit

Permalink
Add specific diagnostic/status for oss authors
Browse files Browse the repository at this point in the history
When we added the new oss role, we didn't accomodate that scenario in the analyzer sample.
  • Loading branch information
kzu committed Sep 30, 2024
1 parent b978668 commit 2992156
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 2 deletions.
17 changes: 16 additions & 1 deletion samples/dotnet/SponsorLink/DiagnosticsManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ class DiagnosticsManager
{ SponsorStatus.Unknown, CreateUnknown([.. Sponsorables.Keys], Funding.Product, Funding.Prefix) },
{ SponsorStatus.Grace, CreateGrace([.. Sponsorables.Keys], Funding.Product, Funding.Prefix) },
{ SponsorStatus.User, CreateSponsor([.. Sponsorables.Keys], Funding.Prefix) },
{ SponsorStatus.Contributor, CreateContributor([.. Sponsorables.Keys], Funding.Prefix) },
{ SponsorStatus.Contributor, CreateContributor([.. Sponsorables.Keys], Funding.Prefix, hidden: true) },
// NOTE: similar to contributor, we don't show OSS author membership in the IDE.
{ SponsorStatus.OpenSource, CreateOpenSource([.. Sponsorables.Keys], Funding.Prefix) },
// NOTE: organization is a special case of sponsor, but we report it as hidden since the user isn't directly involved.
{ SponsorStatus.Organization, CreateSponsor([.. Sponsorables.Keys], Funding.Prefix, hidden: true) },
// NOTE: similar to organization, we don't show team membership in the IDE.
Expand Down Expand Up @@ -192,6 +194,8 @@ SponsorStatus GetOrSetStatus(Func<ImmutableArray<AdditionalText>> getAdditionalF
SponsorStatus.Contributor :
claims.IsInRole("org") ?
SponsorStatus.Organization :
claims.IsInRole("oss") ?
SponsorStatus.OpenSource :
SponsorStatus.Unknown;

if (KnownDescriptors.TryGetValue(status, out var descriptor))
Expand Down Expand Up @@ -284,4 +288,15 @@ SponsorStatus GetOrSetStatus(Func<ImmutableArray<AdditionalText>> getAdditionalF
description: Resources.Contributor_Description,
helpLinkUri: Funding.HelpUrl,
"DoesNotSupportF1Help", "CompilationEnd");

internal static DiagnosticDescriptor CreateOpenSource(string[] sponsorable, string prefix, bool hidden = false) => new(
$"{prefix}112",
Resources.OpenSource_Title,
Resources.OpenSource_Message,
"SponsorLink",
hidden ? DiagnosticSeverity.Hidden : DiagnosticSeverity.Info,
isEnabledByDefault: true,
description: Resources.OpenSource_Description,
helpLinkUri: Funding.HelpUrl,
"DoesNotSupportF1Help", "CompilationEnd");
}
9 changes: 9 additions & 0 deletions samples/dotnet/SponsorLink/Resources.es.resx
Original file line number Diff line number Diff line change
Expand Up @@ -212,4 +212,13 @@ Por favor considera apoyar el proyecto patrocinando en {0} y ejecutando posterio
/// ¡Gracias! 🙏
/// &lt;/remarks&gt;</value>
</data>
<data name="OpenSource_Description" xml:space="preserve">
<value>Gracias por ser parte de la comunidad de código abierto con tus contribuciones 🙏.</value>
</data>
<data name="OpenSource_Message" xml:space="preserve">
<value>Gracias por ser autor de código abierto 💟!</value>
</data>
<data name="OpenSource_Title" xml:space="preserve">
<value>Sos un autor de código abierto, eres lo máximo 💟!</value>
</data>
</root>
9 changes: 9 additions & 0 deletions samples/dotnet/SponsorLink/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -216,4 +216,13 @@ Please consider supporting the project by sponsoring at {0} and running 'sponsor
/// Thanks! 🙏
/// &lt;/remarks&gt;</value>
</data>
<data name="OpenSource_Description" xml:space="preserve">
<value>Thanks for being part of the open source community with your contributions 🙏.</value>
</data>
<data name="OpenSource_Message" xml:space="preserve">
<value>Thank you for being an open source author 💟!</value>
</data>
<data name="OpenSource_Title" xml:space="preserve">
<value>You are a an open source author, you rock 💟!</value>
</data>
</root>
6 changes: 5 additions & 1 deletion samples/dotnet/SponsorLink/SponsorStatus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,9 @@ public enum SponsorStatus
/// <summary>
/// The user is a member of a contributing organization.
/// </summary>
Organization
Organization,
/// <summary>
/// The user is a OSS author.
/// </summary>
OpenSource,
}
5 changes: 5 additions & 0 deletions samples/dotnet/Tests/AnalyzerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,10 @@ public async Task WhenUnknownAndGraceExpired_ThenReportsUnknown()
[InlineData("org,contrib", SponsorStatus.Contributor)]
// team trumps contrib (since team members will typically also be contributors
[InlineData("contrib,team", SponsorStatus.Team)]
[InlineData("contrib,oss", SponsorStatus.Contributor)]
[InlineData("user,oss", SponsorStatus.User)]
[InlineData("org,oss", SponsorStatus.Organization)]
[InlineData("oss", SponsorStatus.OpenSource)]
public async Task WhenSponsoringRole_ThenEnsureStatus(string roles, SponsorStatus status)
{
var sponsor = sponsorable.Sign(roles.Split(',').Select(x => new Claim("roles", x)), expiration: TimeSpan.FromMinutes(5));
Expand Down Expand Up @@ -202,6 +206,7 @@ public async Task WhenMultipleAnalyzers_ThenReportsOnce()
// Simulate directly referenced package
{ "build_property.SponsorableLib", "1.0.0" },
{ "build_property.SponsorLink", "1.0.0" },
{ "build_metadata.SponsorManifest.ItemType", "SponsorManifest" }
}));

var diagnostics = (await compilation.GetAnalyzerDiagnosticsAsync())
Expand Down

0 comments on commit 2992156

Please sign in to comment.