public IEnumerable <DirectoryInfo> EnumerateDirectories(List <string> optionalPackages = null) { var cache = new PackageCache(); if (optionalPackages == null || optionalPackages.Count == 0) { foreach (var dir in cache.EnumerateVersions("*")) { yield return(dir); } } else { foreach (var p in optionalPackages) { var result = cache.EnumerateVersions(p).ToArray(); if (result.Length == 0) { Log.Warning("Package " + p.Quote() + " was not found"); } else { foreach (var dir in result) { yield return(dir); } } } } }
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); } } }
public bool Repair(PackageFile file, bool force = false) { var upk = file.CreateSourcePackage(); var reader = new SourceReader(Log, upk, this); if (force || !reader.CacheExists || reader.HasAnythingChangedSince(reader.CacheTime, false)) { Log.Verbose("Generating cache for " + file.Name); using (new FileLock(Log, file.CacheDirectory)) reader.ExportCache(file.CacheDirectory); return(true); } return(false); }
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 bool Repair(PackageFile file, bool force = false) { var upk = file.CreateSourcePackage(); var reader = new SourceReader(Log, upk, this); // Install NPM packages if package.json exists if (NPM.NeedsInstall(upk)) { new NPM(Log).Install(upk); } if (force || !reader.CacheExists || reader.HasAnythingChangedSince(reader.CacheTime, false)) { Log.Verbose("Generating cache for " + file.Name); using (new FileLock(file.CacheDirectory)) reader.ExportCache(file.CacheDirectory); return(true); } return(false); }
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))); }
public PackageDoctor(Log log) : base(log) { }
public PackageManager(Log log) : base(log) { }