예제 #1
0
        public static SemanticVersion GetLatestMaskedVersion(string mask, List <SemanticVersion> versions)
        {
            var maskMatch = new MaskMatchedVersion(mask);

            var maskMajor    = maskMatch.Major.IsPresent && !maskMatch.Major.IsSubstitute ? int.Parse(maskMatch.Major.Value) : 0;
            var maskMinor    = maskMatch.Minor.IsPresent && !maskMatch.Minor.IsSubstitute ? int.Parse(maskMatch.Minor.Value) : 0;
            var maskBuild    = maskMatch.Build.IsPresent && !maskMatch.Build.IsSubstitute ? int.Parse(maskMatch.Build.Value) : 0;
            var maskRevision = maskMatch.Revision.IsPresent && !maskMatch.Revision.IsSubstitute ? int.Parse(maskMatch.Revision.Value) : 0;

            return(versions.Where(v =>
            {
                if (maskMatch.Major.IsSubstitute)
                {
                    return true;
                }

                if (v.Version.Major != maskMajor)
                {
                    return false;
                }

                if (maskMatch.Minor.IsSubstitute)
                {
                    return true;
                }

                if (v.Version.Minor != maskMinor)
                {
                    return false;
                }

                if (maskMatch.Build.IsSubstitute)
                {
                    return true;
                }

                if (v.Version.Build != maskBuild)
                {
                    return false;
                }

                if (maskMatch.Revision.IsSubstitute)
                {
                    return true;
                }

                if (v.Version.Revision != maskRevision)
                {
                    return false;
                }

                return true;
            }).OrderByDescending(o => o).FirstOrDefault());
        }
예제 #2
0
        static SemanticVersion GenerateVersionFromCurrent(MaskMatchedVersion mask, MaskMatchedVersion current)
        {
            var result = new StringBuilder();

            result.Append(mask.Major.Substitute(current.Major));
            result.Append(mask.Minor.EvaluateFromCurrent(current.Minor, mask.Major));
            result.Append(mask.Build.EvaluateFromCurrent(current.Build, mask.Minor));
            result.Append(mask.Revision.EvaluateFromCurrent(current.Revision, mask.Build));
            result.Append(mask.Tag.EvaluateFromCurrent(current.Tag, mask.Revision));
            return(SemanticVersion.Parse(result.ToString()));
        }
예제 #3
0
        static SemanticVersion GenerateVersionFromMask(MaskMatchedVersion mask)
        {
            var result = new StringBuilder();

            result.Append(mask.Major.EvaluateFromMask());
            result.Append(mask.Minor.EvaluateFromMask("."));
            result.Append(mask.Build.EvaluateFromMask("."));
            result.Append(mask.Revision.EvaluateFromMask("."));
            result.Append(mask.Tag.EvaluateFromMask("-"));
            return(SemanticVersion.Parse(result.ToString()));
        }
예제 #4
0
        public static bool IsMask(string versionString)
        {
            if (string.IsNullOrWhiteSpace(versionString))
                return false;

            var maskMatch = new MaskMatchedVersion(versionString);

            return maskMatch.IsValid && (
                    maskMatch.Major.IsSubstitute ||
                    maskMatch.Minor.IsSubstitute ||
                    maskMatch.Build.IsSubstitute ||
                    maskMatch.Revision.IsSubstitute ||
                    maskMatch.Tag.IsSubstitute
                );
        }
예제 #5
0
        public static bool IsMask(string versionString)
        {
            if (string.IsNullOrWhiteSpace(versionString))
            {
                return(false);
            }

            var maskMatch = new MaskMatchedVersion(versionString);

            return(maskMatch.IsValid && (
                       maskMatch.Major.IsSubstitute ||
                       maskMatch.Minor.IsSubstitute ||
                       maskMatch.Build.IsSubstitute ||
                       maskMatch.Revision.IsSubstitute ||
                       maskMatch.Tag.IsSubstitute
                       ));
        }
예제 #6
0
        public static SemanticVersion GetLatestMaskedVersion(string mask, List<SemanticVersion> versions)
        {
            var maskMatch = new MaskMatchedVersion(mask);

            var maskMajor = maskMatch.Major.IsPresent && !maskMatch.Major.IsSubstitute ? int.Parse(maskMatch.Major.Value) : 0;
            var maskMinor = maskMatch.Minor.IsPresent && !maskMatch.Minor.IsSubstitute ? int.Parse(maskMatch.Minor.Value) : 0;
            var maskBuild = maskMatch.Build.IsPresent && !maskMatch.Build.IsSubstitute ? int.Parse(maskMatch.Build.Value) : 0;
            var maskRevision = maskMatch.Revision.IsPresent && !maskMatch.Revision.IsSubstitute ? int.Parse(maskMatch.Revision.Value) : 0;

            return versions.Where(v =>
            {
                if (maskMatch.Major.IsSubstitute)
                    return true;

                if (v.Version.Major != maskMajor)
                    return false;

                if (maskMatch.Minor.IsSubstitute)
                    return true;

                if (v.Version.Minor != maskMinor)
                    return false;

                if (maskMatch.Build.IsSubstitute)
                    return true;

                if (v.Version.Build != maskBuild)
                    return false;

                if (maskMatch.Revision.IsSubstitute)
                    return true;
                
                if (v.Version.Revision != maskRevision)
                    return false;

                return true;
            }).OrderByDescending(o => o).FirstOrDefault();

        }
예제 #7
0
 static SemanticVersion GenerateVersionFromMask(MaskMatchedVersion mask)
 {
     var result = new StringBuilder();
     result.Append(mask.Major.EvaluateFromMask());
     result.Append(mask.Minor.EvaluateFromMask("."));
     result.Append(mask.Build.EvaluateFromMask("."));
     result.Append(mask.Revision.EvaluateFromMask("."));
     result.Append(mask.Tag.EvaluateFromMask("-"));
     return SemanticVersion.Parse(result.ToString());
 }
예제 #8
0
 static SemanticVersion GenerateVersionFromCurrent(MaskMatchedVersion mask, MaskMatchedVersion current)
 {
     var result = new StringBuilder();
     result.Append(mask.Major.Substitute(current.Major));
     result.Append(mask.Minor.EvaluateFromCurrent(current.Minor, mask.Major));
     result.Append(mask.Build.EvaluateFromCurrent(current.Build, mask.Minor));
     result.Append(mask.Revision.EvaluateFromCurrent(current.Revision, mask.Build));
     result.Append(mask.Tag.EvaluateFromCurrent(current.Tag, mask.Revision));
     return SemanticVersion.Parse(result.ToString());
 }