Beispiel #1
0
 public ICSharpCode.Core.AddIn InstallAddIn(NuGet.IPackage package, string packageDirectory)
 {
     if (InstallAddInFromArchiveCallback != null)
     {
         return(InstallAddInFromPackageCallback(package, packageDirectory));
     }
     else
     {
         return(null);
     }
 }
Beispiel #2
0
 public ICSharpCode.Core.AddIn GetAddInForNuGetPackage(NuGet.IPackage package, bool withAddInsMarkedForInstallation)
 {
     if (GetAddInForNuGetPackageCallback != null)
     {
         return(GetAddInForNuGetPackageCallback(package, withAddInsMarkedForInstallation));
     }
     else
     {
         return(null);
     }
 }
Beispiel #3
0
        private PackageNode(IPackage requiredPackage, IPackage installedPackage, Referer referer)
        {
            Dependencies     = new HashSet <PackageNode>();
            Referers         = new HashSet <Referer>();
            RequiredPackage  = requiredPackage;
            InstalledPackage = installedPackage;

            if (referer != null)
            {
                Referers.Add(referer);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Creates manifest file for theme or widget to save package metadata
        /// </summary>
        /// <param name="package">Package</param>
        /// <param name="packageFiles">Installed files</param>
        public static void CreateManifestIfNotExists(NuGet.IPackage package, List <PackageFile> packageFiles)
        {
            var shortPath = "";
            var type      = PackageType(packageFiles);

            if (type == "theme")
            {
                shortPath = $@"Custom\Themes\{package.Id}\theme.xml";
            }

            if (type == "widget")
            {
                shortPath = $@"Custom\Widgets\{package.Id}\widget.xml";
            }

            if (string.IsNullOrEmpty(shortPath))
            {
                return;
            }

            var path = Path.Combine(HttpContext.Current.Server.MapPath(Utils.ApplicationRelativeWebRoot), shortPath);

            if (File.Exists(path))
            {
                return;
            }

            using (var writer = new XmlTextWriter(path, Encoding.UTF8))
            {
                writer.Formatting  = Formatting.Indented;
                writer.Indentation = 4;
                writer.WriteStartDocument(true);
                writer.WriteStartElement("metadata");

                writer.WriteElementString("id", package.Id);
                writer.WriteElementString("description", package.Description);

                writer.WriteElementString("authors", string.Join(", ", package.Authors));

                writer.WriteElementString("website", package.ProjectUrl == null ? "" : package.ProjectUrl.ToString());
                writer.WriteElementString("version", package.Version.ToString());
                writer.WriteElementString("iconurl", package.IconUrl == null ? "" : package.IconUrl.ToString());

                writer.WriteEndElement();
            }
            var idx = packageFiles.Count + 1;

            packageFiles.Add(new PackageFile {
                PackageId = package.Id, FileOrder = idx, FilePath = shortPath, IsDirectory = false
            });
        }
Beispiel #5
0
        public void UpdateInstalledPackage(IPackage package)
        {
            if (InstalledPackage != null && package.Id != InstalledPackage.Id)
            {
                throw new Exception("Package Ids must match.");
            }

            if (InstalledPackage != null && package.Version < InstalledPackage.Version)
            {
                throw new Exception("Downgrading not allowed.");
            }

            InstalledPackage = package;
        }
Beispiel #6
0
        public void UpdateRequiredPackage(IPackage package)
        {
            if (package.Id != RequiredPackage.Id)
            {
                throw new Exception("Package Ids must match.");
            }

            if (package.Version < RequiredPackage.Version)
            {
                throw new Exception("Downgrading not allowed.");
            }

            RequiredPackage = package;
        }
Beispiel #7
0
        internal PackageInfo(NuGet.IPackage nuGetPackage)
        {
            // Retrieve package data
            this.name           = new PackageName(nuGetPackage.Id, nuGetPackage.Version.Version);
            this.title          = nuGetPackage.Title;
            this.summary        = nuGetPackage.Summary;
            this.description    = nuGetPackage.Description;
            this.releaseNotes   = nuGetPackage.ReleaseNotes;
            this.requireLicense = nuGetPackage.RequireLicenseAcceptance;
            this.projectUrl     = nuGetPackage.ProjectUrl;
            this.licenseUrl     = nuGetPackage.LicenseUrl;
            this.iconUrl        = nuGetPackage.IconUrl;
            this.downloadCount  = nuGetPackage.DownloadCount;
            this.publishDate    = nuGetPackage.Published.HasValue ? nuGetPackage.Published.Value.DateTime : DateTime.MinValue;

            if (nuGetPackage.Authors != null)
            {
                this.authors.AddRange(nuGetPackage.Authors);
            }
            if (nuGetPackage.Tags != null)
            {
                this.tags.AddRange(nuGetPackage.Tags.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
            }

            // Retrieve the matching set of dependencies.
            IEnumerable <NuGet.PackageDependencySet> dependencySets = nuGetPackage.DependencySets;

            if (dependencySets != null)
            {
                List <FrameworkName> availableTargetFrameworks = dependencySets.Select(item => item.TargetFramework).ToList();
                FrameworkName        matchingTargetFramework   = PackageManager.SelectBestFrameworkMatch(availableTargetFrameworks);

                NuGet.PackageDependencySet matchingDependencySet = dependencySets.FirstOrDefault(item => item.TargetFramework == matchingTargetFramework);
                if (matchingDependencySet != null)
                {
                    foreach (NuGet.PackageDependency dependency in matchingDependencySet.Dependencies)
                    {
                        if (dependency.VersionSpec != null && dependency.VersionSpec.MinVersion != null)
                        {
                            this.dependencies.Add(new PackageName(dependency.Id, dependency.VersionSpec.MinVersion.Version));
                        }
                        else
                        {
                            this.dependencies.Add(new PackageName(dependency.Id, null));
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Copy uncompressed package files
        /// to application directories
        /// </summary>
        /// <param name="package">Package</param>
        public static List <PackageFile> InstallPackage(NuGet.IPackage package)
        {
            var packageFiles = new List <PackageFile>();

            var content = HttpContext.Current.Server.MapPath(Utils.ApplicationRelativeWebRoot +
                                                             string.Format("App_Data/packages/{0}.{1}/content", package.Id, package.Version));

            var lib = HttpContext.Current.Server.MapPath(Utils.ApplicationRelativeWebRoot +
                                                         string.Format("App_Data/packages/{0}.{1}/lib", package.Id, package.Version));

            var root = HttpContext.Current.Server.MapPath(Utils.ApplicationRelativeWebRoot);
            var bin  = HttpContext.Current.Server.MapPath(Utils.ApplicationRelativeWebRoot + "bin");

            // copy content files
            var source = new DirectoryInfo(content);
            var target = new DirectoryInfo(root);

            fileOrder = 0;

            if (Directory.Exists(content))
            {
                CopyDirectory(source, target, package.Id, packageFiles);

                CreateManifestIfNotExists(package, packageFiles);

                // clear after install
                ForceDeleteDirectory(content);
            }

            // copy DLLs from lib to bin
            if (Directory.Exists(lib))
            {
                source = new DirectoryInfo(lib);
                target = new DirectoryInfo(bin);

                fileOrder = 0;
                CopyDirectory(source, target, package.Id, packageFiles);

                // clear after install
                ForceDeleteDirectory(lib);
            }

            return(packageFiles);
        }
Beispiel #9
0
        internal PackageInfo(NuGet.IPackage nuGetPackage)
        {
            // Retrieve package data
            this.name           = new PackageName(nuGetPackage.Id, nuGetPackage.Version.Version);
            this.title          = nuGetPackage.Title;
            this.summary        = nuGetPackage.Summary;
            this.description    = nuGetPackage.Description;
            this.releaseNotes   = nuGetPackage.ReleaseNotes;
            this.requireLicense = nuGetPackage.RequireLicenseAcceptance;
            this.projectUrl     = nuGetPackage.ProjectUrl;
            this.licenseUrl     = nuGetPackage.LicenseUrl;
            this.iconUrl        = nuGetPackage.IconUrl;
            this.downloadCount  = nuGetPackage.DownloadCount;
            this.publishDate    = nuGetPackage.Published.HasValue ? nuGetPackage.Published.Value.DateTime : DateTime.MinValue;

            if (nuGetPackage.Authors != null)
            {
                this.authors.AddRange(nuGetPackage.Authors);
            }
            if (nuGetPackage.Tags != null)
            {
                this.tags.AddRange(nuGetPackage.Tags.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
            }

            // Retrieve the matching set of dependencies. For now, don't support different sets and just pick the first one.
            var matchingDependencySet = nuGetPackage.DependencySets.FirstOrDefault();

            if (matchingDependencySet != null)
            {
                foreach (NuGet.PackageDependency dependency in matchingDependencySet.Dependencies)
                {
                    if (dependency.VersionSpec != null && dependency.VersionSpec.MinVersion != null)
                    {
                        this.dependencies.Add(new PackageName(dependency.Id, dependency.VersionSpec.MinVersion.Version));
                    }
                    else
                    {
                        this.dependencies.Add(new PackageName(dependency.Id, null));
                    }
                }
            }
        }
Beispiel #10
0
        public int CompareAddInToPackageVersion(ICSharpCode.Core.AddIn addIn, NuGet.IPackage nuGetPackage)
        {
            if ((addIn == null) || (nuGetPackage == null))
            {
                // Consider this as equal (?)
                return(0);
            }

            // Look if AddIn has a NuGet version tag in manifest
            Version addInVersion = addIn.Version;

            if (addIn.Properties.Contains(ManagedAddIn.NuGetPackageVersionManifestAttribute))
            {
                try
                {
                    addInVersion = new Version(addIn.Properties[ManagedAddIn.NuGetPackageVersionManifestAttribute]);
                }
                catch (Exception)
                {
                    addInVersion = addIn.Version;
                }
            }

            if (addInVersion == null)
            {
                if (nuGetPackage == null)
                {
                    // Both versions are null -> equal
                    return(0);
                }
                else
                {
                    // Non-null version is greater
                    return(-1);
                }
            }

            return(addInVersion.CompareTo(nuGetPackage.Version.Version));
        }
Beispiel #11
0
 protected override bool IsProjectPackage(NuGet.IPackage package)
 {
     IsProjectPackageIsCalled = true;
     return(IsProjectPackageReturnsValue);
 }
Beispiel #12
0
 public ICSharpCode.Core.AddIn GetAddInForNuGetPackage(NuGet.IPackage package)
 {
     return(GetAddInForNuGetPackage(package, false));
 }
Beispiel #13
0
 public bool IsDependentOn(IPackage package)
 {
     return(Dependencies.Any(x => x.RequiredPackage.Id == package.Id || x.IsDependentOn(package)));
 }
Beispiel #14
0
 public static PackageNode Create(IPackage package, Referer referer = null, IPackage installedPackage = null) => new PackageNode(package, installedPackage, referer);
Beispiel #15
0
 public PackageWrapper(NuGet.IPackage package, System.Collections.Generic.IEnumerable <NuGet.PackageDependencySet> dependencySets)
 {
 }
 public PackageViewModel CreateViewModel(NuGet.IPackage package, string packageSource)
 {
     return(new PackageViewModel(package, packageSource, MruManager, UIServices, EditorService.Value, SettingsManager));
 }
 public override IVsExtension CreateExtension(NuGet.IPackage package)
 {
     return(new PackageItem(this, package));
 }
Beispiel #18
0
 public static Referer CreateFromSolutionHighestVersion(IPackage package) => new Referer(name: HIGHEST_SOLUTION_VERSION_REFERER_NAME, packageNode: null, versionSpec: package.Version.ToMinVersionSpecInclusive());