withSIX.Sync.Core.Packages.Internals.DependencyVersionMatcher.MatchesConstraints C# (CSharp) Method

MatchesConstraints() public method

public MatchesConstraints ( IEnumerable packageVersions, string versionConstraint, string branch = null ) : string
packageVersions IEnumerable
versionConstraint string
branch string
return string
        public string MatchesConstraints(IEnumerable<string> packageVersions, string versionConstraint,
            string branch = null) {
            var doVersion = !string.IsNullOrWhiteSpace(versionConstraint);
            var doBranch = !string.IsNullOrWhiteSpace(branch) && (branch != SpecificVersionInfo.StableBranch);
            packageVersions = packageVersions.OrderBy(x => new SpecificVersionInfo(x));

            if (doBranch) {
                return doVersion
                    ? packageVersions.LastOrDefault(
                        x =>
                            x.EndsWith("-" + branch) &&
                            MatchesVersionConstraint(x.Split('-').First(), versionConstraint))
                    : packageVersions.LastOrDefault(x => x.EndsWith("-" + branch));
            }

            return doVersion
                ? packageVersions.LastOrDefault(x => MatchesVersionConstraint(x.Split('-').First(), versionConstraint))
                : null;
        }

Usage Example

        public void MatchEqualOrHigher2Reversed() {
            var dvm = new DependencyVersionMatcher();

            var result = dvm.MatchesConstraints(new[] {"1.0.0.5", "1.0.0.4"}, ">= 1.0.0.4");

            result.Should().Be("1.0.0.5");
        }