diff --git a/Dalamud/Plugin/Internal/PluginValidator.cs b/Dalamud/Plugin/Internal/PluginValidator.cs index 21144ca11..134bb2a4c 100644 --- a/Dalamud/Plugin/Internal/PluginValidator.cs +++ b/Dalamud/Plugin/Internal/PluginValidator.cs @@ -80,9 +80,18 @@ internal static class PluginValidator if (plugin.Manifest.Tags == null || plugin.Manifest.Tags.Count == 0) problems.Add(new NoTagsProblem()); - if (string.IsNullOrEmpty(plugin.Manifest.Description) || plugin.Manifest.Description.Split(LineSeparator, StringSplitOptions.RemoveEmptyEntries).Length <= 2) + if (string.IsNullOrEmpty(plugin.Manifest.Description) || plugin.Manifest.Description.Split(LineSeparator, StringSplitOptions.RemoveEmptyEntries).Length <= 1) problems.Add(new NoDescriptionProblem()); + if (string.IsNullOrEmpty(plugin.Manifest.Punchline)) + problems.Add(new NoPunchlineProblem()); + + if (string.IsNullOrEmpty(plugin.Manifest.Name)) + problems.Add(new NoNameProblem()); + + if (string.IsNullOrEmpty(plugin.Manifest.Author)) + problems.Add(new NoAuthorProblem()); + return problems; } @@ -146,4 +155,40 @@ internal static class PluginValidator /// public string GetLocalizedDescription() => "Your plugin does not have a description in its manifest, or it is very terse. Please consider adding one to give users more information about your plugin."; } + + /// + /// Representing a problem where a plugin has no punchline in its manifest. + /// + public class NoPunchlineProblem : IValidationProblem + { + /// + public ValidationSeverity Severity => ValidationSeverity.Information; + + /// + public string GetLocalizedDescription() => "Your plugin does not have a punchline in its manifest. Please consider adding one to give users a quick overview of what your plugin does."; + } + + /// + /// Representing a problem where a plugin has no name in its manifest. + /// + public class NoNameProblem : IValidationProblem + { + /// + public ValidationSeverity Severity => ValidationSeverity.Fatal; + + /// + public string GetLocalizedDescription() => "Your plugin does not have a name in its manifest."; + } + + /// + /// Representing a problem where a plugin has no author in its manifest. + /// + public class NoAuthorProblem : IValidationProblem + { + /// + public ValidationSeverity Severity => ValidationSeverity.Fatal; + + /// + public string GetLocalizedDescription() => "Your plugin does not have an author in its manifest."; + } }