Beispiel #1
0
        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);
                        }
                    }
                }
            }
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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)));
        }
Beispiel #7
0
 public PackageDoctor(Log log)
     : base(log)
 {
 }
Beispiel #8
0
 public PackageManager(Log log)
     : base(log)
 {
 }