Beispiel #1
0
 public Package GetOwnerPackage(string path)
 {
     return(LocalPackages.FirstOrDefault(ele => ele.ContainsFile(path)));
 }
Beispiel #2
0
 public Package GetOwnerPackage(Type t)
 {
     return(LocalPackages.FirstOrDefault(package => package.LoadedTypes.Contains(t)));
 }
Beispiel #3
0
        public Package ScanPackageDirectory(string directory, bool checkCertificates)
        {
            try
            {
                var headerPath = Path.Combine(directory, "pkg.json");

                Package discoveredPackage;

                // get the package name and the installed version
                if (PathHelper.IsValidPath(headerPath))
                {
                    discoveredPackage = Package.FromJson(headerPath, AsLogger());
                    if (discoveredPackage == null)
                    {
                        throw new LibraryLoadFailedException(directory, String.Format(Properties.Resources.MalformedHeaderPackage, headerPath));
                    }
                }
                else
                {
                    throw new LibraryLoadFailedException(directory, String.Format(Properties.Resources.NoHeaderPackage, headerPath));
                }

                // prevent loading unsigned packages if the certificates are required on package dlls
                if (checkCertificates)
                {
                    CheckPackageNodeLibraryCertificates(directory, discoveredPackage);
                }

                var discoveredVersion = CheckAndGetPackageVersion(discoveredPackage.VersionName, discoveredPackage.Name, discoveredPackage.RootDirectory);

                var existingPackage = LocalPackages.FirstOrDefault(package =>
                                                                   (package.Name == discoveredPackage.Name) &&
                                                                   (package.LoadState.State != PackageLoadState.StateTypes.Unloaded));

                // Is this a new package?
                if (existingPackage == null)
                {
                    Add(discoveredPackage);
                    return(discoveredPackage); // success
                }

                // Conflict invloving a built-in package
                if (discoveredPackage.BuiltInPackage || existingPackage.BuiltInPackage)
                {
                    // We show both packages but we mark the new one as unloaded.
                    discoveredPackage.LoadState.SetAsUnloaded();
                    Add(discoveredPackage);
                }

                var existingVersion = CheckAndGetPackageVersion(existingPackage.VersionName, existingPackage.Name, existingPackage.RootDirectory);

                // Is this a duplicated package?
                if (existingVersion == discoveredVersion)
                {
                    // Duplicated with the same version
                    throw new LibraryLoadFailedException(directory,
                                                         String.Format(Properties.Resources.DulicatedPackage,
                                                                       discoveredPackage.Name,
                                                                       discoveredPackage.RootDirectory));
                }

                // Is the existing version newer?
                if (existingVersion > discoveredVersion)
                {
                    // Older version found, show notification
                    throw new LibraryLoadFailedException(directory, String.Format(Properties.Resources.DuplicatedOlderPackage,
                                                                                  existingPackage.Name,
                                                                                  discoveredPackage.RootDirectory,
                                                                                  existingVersion.ToString(),
                                                                                  discoveredVersion.ToString()));
                }

                // Newer version found, show notification.
                throw new LibraryLoadFailedException(directory, String.Format(Properties.Resources.DuplicatedNewerPackage,
                                                                              existingPackage.Name,
                                                                              discoveredPackage.RootDirectory,
                                                                              existingVersion.ToString(),
                                                                              discoveredVersion.ToString()));
            }
            catch (Exception e)
            {
                Log(String.Format(Properties.Resources.ExceptionEncountered, directory), WarningLevel.Error);
                Log(e);
            }

            return(null);
        }
Beispiel #4
0
 public Package GetPackageFromRoot(string path)
 {
     return(LocalPackages.FirstOrDefault(pkg => pkg.RootDirectory == path));
 }
Beispiel #5
0
 public void UpdateLocalDependency(BaseVersion dependency)
 {
     CurrentLocalDependency = dependency == null
         ? _globalJoker
         : (LocalPackages.FirstOrDefault(x => x.Equals(dependency)) ?? _globalJoker);
 }