private Package GetCompatiblePackage(string packageSpec) { if (!string.IsNullOrEmpty(packageSpec)) { string packageId; SemanticVersion semVer; Utils.VersionOp vOp; Utils.VersionComponent filterComponent; Utils.GetPackageSpecComponents(packageSpec, out packageId, out vOp, out semVer, out filterComponent); if (Packages.ContainsKey(packageId)) { List <Package> potentialPackages = Packages[packageId]; var filteredPotentialPackages = new List <Package>(); foreach (var potentialPackage in potentialPackages) { if (!Utils.FilterPackage(semVer, potentialPackage.Version, filterComponent)) { filteredPotentialPackages.Add(potentialPackage); } } foreach (var potentialPackage in filteredPotentialPackages) { if (Utils.ValidPackage(semVer, potentialPackage.Version, filterComponent, vOp)) { return(potentialPackage); } } } } return(null); }
public bool AddPackage(SpecificVersion package) { if (package == null) { throw new ArgumentNullException(nameof(package)); } lock (Packages) { if (!HasPackage(package)) { if (!Packages.ContainsKey(package.Name)) { Packages.Add(package.Name, new List <string>()); } Packages[package.Name].Add(package.VersionData); return(true); } } return(false); }
public SpecificVersion GetPackage(SpecificVersion package) { lock (Packages) { if (!Packages.ContainsKey(package.Name)) { return(null); } var packages = Packages[package.Name]; //if (package.Version == null && package.Branch == null) // return GetLatest(package, packages); if (packages.Contains(package.VersionData)) { return(package); } var m = _dependencyVersionMatcher.MatchesConstraints(packages, package.Version.ToString(), package.Branch); return(m == null ? null : new SpecificVersion(package.Name, m)); } }
public ExtensionCollection(string name) : base(name) { foreach (var d in DirectoryEx.Extensions.GetDirectories()) { if (!d.Name.Contains(".")) { Add(new Extension(d)); } } foreach (var d in DirectoryEx.Extensions.GetDirectory(".release").GetDirectories()) { if (Packages.ContainsKey(d.Name)) { Packages.Remove(d.Name); } if (!d.Name.Contains(".")) { Add(new Extension(d)); } } }
public SpecificVersion GetPackage(Dependency package) { lock (Packages) { if (!Packages.ContainsKey(package.Name)) { return(null); } var packages = Packages[package.Name]; if ((package.Version == null) && (package.Branch == null)) { return(GetLatest(package, packages)); } if (packages.Contains(package.VersionData)) { return(new SpecificVersion(package.GetFullName())); } var m = _dependencyVersionMatcher.MatchesConstraints(packages, package.Version, package.Branch); return(m == null ? null : new SpecificVersion(package.Name, m)); } }