diff --git a/Hippo/Messages/CreateChannelRequest.cs b/Hippo/Messages/CreateChannelRequest.cs index aef0033fd..905958014 100644 --- a/Hippo/Messages/CreateChannelRequest.cs +++ b/Hippo/Messages/CreateChannelRequest.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations; using Hippo.Logging; using Hippo.Models; +using Hippo.Rules; namespace Hippo.Messages { @@ -65,10 +66,11 @@ public IEnumerable Validate(ValidationContext validationContex } - if (!SemVer.Range.TryParse(RevisionRange, out _)) + var ruleError = RevisionRangeRule.Validate(RevisionRange); + if (ruleError != null) { yield return new ValidationResult( - $"Revision Range does not comply with Semantic Versioning version number range rules", + $"Revision range is not valid rule syntax: {ruleError.Message}", new[] { nameof(RevisionRange) }); } diff --git a/Hippo/Rules/RevisionRangeRule.cs b/Hippo/Rules/RevisionRangeRule.cs index 8593ccb16..81e628d4a 100644 --- a/Hippo/Rules/RevisionRangeRule.cs +++ b/Hippo/Rules/RevisionRangeRule.cs @@ -25,6 +25,19 @@ public static RevisionRangeRule Parse(string? rule) return new NpmRevisionRangeRule(rule); } + public static Exception? Validate(string? rule) + { + try + { + Parse(rule); + return null; + } + catch (Exception e) + { + return e; + } + } + public abstract Revision? Match(ICollection candidates); private class NpmRevisionRangeRule : RevisionRangeRule