public void Repair(List <string> optionalPackages = null, bool force = false) { // Implicit --force when packages are specified explicitly force = force || optionalPackages?.Count > 0; foreach (var dir in EnumerateDirectories(optionalPackages)) { var path = dir.FullName; try { // Skip locally built packages (taken care of by LibraryBuilder) if (PackageFile.Exists(path) && !File.Exists(Path.Combine(path, ".unobuild")) && Repair(PackageFile.Load(path), force)) { Log.Message("Updated " + path.Relative().Quote()); } } catch (Exception e) { Log.Trace(e); Log.Error("Failed to load package " + path.Relative().Quote() + ": " + e.Message); } } }
PackageFile GetFile(PackageReference reference) { var name = reference.PackageName; var versionRange = VersionRange.Parse(reference.PackageVersion); if (_sourcePaths.Count > 0) { var dirs = _sourcePaths.GetOrderedVersionDirectories(name); foreach (var dir in dirs) { if (versionRange.IsCompatible(dir.Name)) { return(PackageFile.Load(dir.FullName)); } } // Fallback to "best" version for now if (dirs.Length > 0) { return(PackageFile.Load(dirs[0].FullName)); } } string version; if (_locks.TryGetValue(name, out version)) { foreach (var dir in _searchPaths.EnumeratePackageDirectories(name)) { var versionDir = Path.Combine(dir.FullName, version); if (PackageFile.Exists(versionDir)) { return(PackageFile.Load(versionDir)); } } } else { var dirs = _searchPaths.GetOrderedVersionDirectories(name).ToArray(); foreach (var dir in dirs) { if (versionRange.IsCompatible(dir.Name)) { return(PackageFile.Load(dir.FullName)); } } // Fallback to "best" version for now if (dirs.Length > 0) { return(PackageFile.Load(dirs[0].FullName)); } } return(null); }
public PackageFile Install(IPackage upk) { var dst = Path.Combine(InstallDirectory, upk.Name, upk.Version); Log.WriteLine("Installing " + upk.Name + " " + upk.Version, ConsoleColor.Blue); using (new FileLock(dst)) { if (Force || !PackageFile.Exists(dst)) { upk.Install(dst); } var file = PackageFile.Load(dst); CheckInstalled(file); return(file); } }
public PackageFile Install(string name, string version = null) { if (!Force) { var upk = GetInstalled(name, version); if (upk != null) { try { var file = PackageFile.Load(upk.Source); CheckInstalled(file); return(file); } catch (Exception e) { Log.Trace(e); } } } var cached = Path.Combine(CacheDir, name + "." + version + ".nupkg"); if (File.Exists(cached)) { try { return(Install(new UpkFile(cached, name, version))); } catch (Exception e) { Log.Trace(e); } } return(Install(FindPackage(name, version))); }
PackageFile GetFile(PackageReference reference) { var name = reference.PackageName; var versionRange = VersionRange.Parse(reference.PackageVersion); if (_sourcePaths.Count > 0) { var dirs = _sourcePaths.GetOrderedVersionDirectories(name); foreach (var dir in dirs) { if (versionRange.IsCompatible(dir.Name)) { return(PackageFile.Load(dir.FullName)); } } // Fallback to "best" version for now if (dirs.Length > 0) { return(PackageFile.Load(dirs[0].FullName)); } } string version; if (_locks.TryGetValue(name, out version)) { foreach (var dir in _searchPaths.EnumeratePackageDirectories(name)) { var versionDir = Path.Combine(dir.FullName, version); if (PackageFile.Exists(versionDir)) { return(PackageFile.Load(versionDir)); } } if (_pm != null) { try { return(_pm.Install(name, version)); } catch (Exception e) { Log.Trace(e); Log.Error("Failed to install package " + name.Quote() + ": " + e.Message); } } } else { var dirs = _searchPaths.GetOrderedVersionDirectories(name).ToArray(); foreach (var dir in dirs) { if (versionRange.IsCompatible(dir.Name)) { return(PackageFile.Load(dir.FullName)); } } // Fallback to "best" version for now if (dirs.Length > 0) { return(PackageFile.Load(dirs[0].FullName)); } } return(null); }