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)); }
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); }