private Package?GetSingleVersionAux(IPackageRange package) { // https://docs.microsoft.com/en-us/nuget/reference/package-versioning#version-ranges-and-wildcards string range = package.VersionRange; // Exact version match: "[x.y.z]" if (!range.Contains(",") && range.StartsWith("[") && range.EndsWith("]")) { int length = range.Length - 2; return(new Package(package.Id, range.Substring(1, length).Trim(), package.OriginProject)); } // Minimum version, inclusive: "x.y.z" if (!range.Contains(",")) { return(new Package(package.Id, range.Trim(), package.OriginProject)); } // Inclusive minimal version: "[x.y.z, ..." if (range.StartsWith("[")) { int length = range.IndexOf(",") - 1; return(new Package(package.Id, range.Substring(1, length).Trim(), package.OriginProject)); } // Inclusive maximal version: "..., x.y.z]" if (range.StartsWith("]")) { int length = range.IndexOf(",") - 1; return(new Package(package.Id, range.Substring(1, length).Trim(), package.OriginProject)); } // Exclusive range: "(x.y.z, a.b.c)", "(x.y.z,)", "(, x.y.z)" if (range.StartsWith("(") && range.EndsWith(")")) { // We cannot pick a specific version because we do not know which exist var versions = this.versionProvider.GetVersions(package.Id); var compare = GetExlusiveVersionComparer(range); var version = versions.Select(SemanticVersion.Parse).FirstOrDefault(compare); if (version == null) { Log.Error("Could not find valid version for range: " + package.VersionRange); return(null); } return(new Package(package.Id, version.ToString(), package.OriginProject)); } Log.Error("Unhandled version format: " + package.VersionRange); return(null); }
public InvalidDependencyChain(IPackageRange package, string message) : base(new AnalyzedPackage(package.Id, package.VersionRange, package.OriginProject, AnalysisState.Error, message), EmptyList) { }
public Task <Package?> GetSingleVersion(IPackageRange package) { return(GetSingleVersion(package.Id, package.VersionRange, package.OriginProject)); }
public Task <Package?> GetSingleVersion(IPackageRange package) { Package?result = GetSingleVersionAux(package); return(Task.FromResult(result)); }