예제 #1
0
        internal static bool ValidPackage(SemanticVersion specVer1, SemanticVersion packageVer2, VersionComponent filterComponent, VersionOp versionOp)
        {
            Version specV    = specVer1.Version;
            Version packageV = packageVer2.Version;

            return(comparisonFunctions[(int)versionOp](packageV, specV, filterComponent));
        }
예제 #2
0
        internal static void GetPackageSpecComponents(string packageSpec, out string packageId, out VersionOp versionOp, out SemanticVersion semVer, out VersionComponent filterComponent)
        {
            string packageVersion;
            var    specComponents = packageSpec.Split(' ');

            if (specComponents.Length == 1)
            {
                packageId      = specComponents[0];
                versionOp      = VersionOp.GreaterEqual;
                packageVersion = "0";
            }
            else if (specComponents.Length == 3)
            {
                packageId      = specComponents[0];
                versionOp      = OpsMapping[specComponents[1]];
                packageVersion = specComponents[2];
            }
            else
            {
                throw new InvalidDataException(string.Format("Invlaid package spec {0}, needs to be \"packageName compOperator x[.y.z.w-tag]", packageSpec));
            }
            int idx             = 0;
            int filterThreshold = 0;

            while (idx < packageVersion.Length && packageVersion[idx] != '-')
            {
                if (packageVersion[idx++] == '.')
                {
                    filterThreshold++;
                }
            }
            if (filterThreshold == 0)
            {
                packageVersion = packageVersion.Insert(idx, ".0");
            }
            semVer          = ParseVersion(packageVersion);
            filterComponent = (VersionComponent)Math.Min(filterThreshold, (int)VersionComponent.Build);
        }