Beispiel #1
0
        protected override bool Validate(NuspecDependency nuspecDependency, NuspecDependency nuConfigPackage, out string message)
        {
            var lowerEnd   = nuspecDependency.MinVersion;
            var lowVersion = new Version(lowerEnd.Major, lowerEnd.Minor, lowerEnd.Bugfix);

            var actualVersion = new Version(nuConfigPackage.MinVersion.Major, nuConfigPackage.MinVersion.Minor, nuConfigPackage.MinVersion.Bugfix);

            bool greateOrEqualLowBound;

            if (lowerEnd.Inclusive)
            {
                greateOrEqualLowBound = actualVersion >= lowVersion;
            }
            else
            {
                greateOrEqualLowBound = actualVersion > lowVersion;
            }

            bool lowerOrEqualUpperBound;

            if (nuspecDependency.MaxVersion == null)
            {
                lowerOrEqualUpperBound = true;
            }
            else
            {
                var upperEnd  = nuspecDependency.MaxVersion;
                var upVersion = new Version(upperEnd.Major, upperEnd.Minor, upperEnd.Bugfix);

                if (upperEnd.Inclusive)
                {
                    lowerOrEqualUpperBound = actualVersion <= upVersion;
                }
                else
                {
                    lowerOrEqualUpperBound = actualVersion < upVersion;
                }
            }

            if (greateOrEqualLowBound && lowerOrEqualUpperBound)
            {
                message = null;
                return(true);
            }

            message = $"Referenced package '{nuConfigPackage.Name}' (Version: {nuConfigPackage.Version} in packages config is not in range of Nuspec version '{nuspecDependency.Version}'";

            return(false);
        }
Beispiel #2
0
        protected override bool Validate(NuspecDependency nuspecDependency, NuspecDependency nuConfigPackage, out string message)
        {
            var specMin = nuspecDependency.MinVersion;
            var specMax = nuspecDependency.MaxVersion;

            if (specMax == null)
            {
                message = $"Cannot evaluate rule for '{nuspecDependency.Name}' if no max range is set";
                return(false);
            }

            if (specMax.Major == specMin.Major && !(specMax.Minor > specMin.Minor))
            {
                message = $"There package reference '{nuspecDependency.Name}' with version '{nuspecDependency.Version}' does not allow non-breaking changes";
                return(false);
            }

            message = null;
            return(false);
        }
Beispiel #3
0
 protected abstract bool Validate(NuspecDependency nuspecDependency, NuspecDependency nuConfigPackage, out string message);
Beispiel #4
0
        public static NuspecDependency Convert(XmlNode depdencencyNode)
        {
            if (depdencencyNode == null)
            {
                throw new ArgumentNullException(nameof(depdencencyNode));
            }

            if (depdencencyNode.Attributes == null)
            {
                return(null);
            }

            var id            = depdencencyNode.Attributes["id"];
            var versionString = depdencencyNode.Attributes["version"];

            if (id == null || versionString == null)
            {
                return(null);
            }

            var versionStringValue = versionString.Value;

            var nuspecDependency = new NuspecDependency {
                Name = id.Value, Version = versionStringValue
            };

            // Parse Version
            if (versionStringValue.Contains(","))
            {
                if (!((versionStringValue.StartsWith("[") || versionStringValue.StartsWith("(")) && (versionStringValue.EndsWith("]") || versionStringValue.EndsWith(")"))))
                {
                    throw new ArgumentException();
                }

                var rangeParts = versionStringValue.Split(new[] { "," }, StringSplitOptions.None);

                // Left Part
                if (!string.IsNullOrWhiteSpace(rangeParts[0]) && rangeParts[0].Length > 1)
                {
                    var leftVersion = CreateVersion(rangeParts[0].Substring(1));
                    leftVersion.Inclusive = rangeParts[0].StartsWith("[");

                    nuspecDependency.MinVersion = leftVersion;
                }

                if (!string.IsNullOrWhiteSpace(rangeParts[1]) && rangeParts[1].Length > 1)
                {
                    // Right Part
                    var rightVersion = CreateVersion(rangeParts[1].Substring(0, rangeParts[1].Length - 1));
                    rightVersion.Inclusive = rangeParts[1].EndsWith("]");

                    nuspecDependency.MaxVersion = rightVersion;
                }
            }
            else
            {
                // [1.0]	x == 1.0	Exact version match
                if (versionStringValue.StartsWith("[") && versionStringValue.EndsWith("]"))
                {
                    var exactVersion = CreateVersion(versionStringValue.Substring(1, versionStringValue.Length - 2));

                    exactVersion.Inclusive = true;

                    nuspecDependency.MinVersion = exactVersion;
                    nuspecDependency.MaxVersion = exactVersion;
                }
                else
                {
                    var minVersion = CreateVersion(versionStringValue);
                    minVersion.Inclusive = true;

                    nuspecDependency.MinVersion = minVersion;
                    nuspecDependency.MaxVersion = null;
                }
            }

            return(nuspecDependency);
        }