1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using System.Collections.Generic;
8
using ICSharpCode.PackageManagement.EnvDTE;
9
using ICSharpCode.SharpDevelop.Project;
12
namespace ICSharpCode.PackageManagement
14
public class PackageManagementProject : IPackageManagementProject
16
ISharpDevelopPackageManager packageManager;
17
ISharpDevelopProjectManager projectManager;
18
IPackageManagementEvents packageManagementEvents;
19
MSBuildBasedProject msbuildProject;
21
public PackageManagementProject(
22
IPackageRepository sourceRepository,
23
MSBuildBasedProject project,
24
IPackageManagementEvents packageManagementEvents,
25
IPackageManagerFactory packageManagerFactory)
27
SourceRepository = sourceRepository;
28
msbuildProject = project;
29
this.packageManagementEvents = packageManagementEvents;
31
packageManager = packageManagerFactory.CreatePackageManager(sourceRepository, project);
32
projectManager = packageManager.ProjectManager;
36
get { return msbuildProject.Name; }
39
public IPackageRepository SourceRepository { get; private set; }
41
public ILogger Logger {
42
get { return packageManager.Logger; }
44
packageManager.Logger = value;
45
packageManager.FileSystem.Logger = value;
47
projectManager.Logger = value;
48
projectManager.Project.Logger = value;
52
public event EventHandler<PackageOperationEventArgs> PackageInstalled {
53
add { packageManager.PackageInstalled += value; }
54
remove { packageManager.PackageInstalled -= value; }
57
public event EventHandler<PackageOperationEventArgs> PackageUninstalled {
58
add { packageManager.PackageUninstalled += value; }
59
remove { packageManager.PackageUninstalled -= value; }
62
public event EventHandler<PackageOperationEventArgs> PackageReferenceAdded {
63
add { projectManager.PackageReferenceAdded += value; }
64
remove { projectManager.PackageReferenceAdded -= value; }
67
public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved {
68
add { projectManager.PackageReferenceRemoved += value; }
69
remove { projectManager.PackageReferenceRemoved -= value; }
72
public bool IsPackageInstalled(IPackage package)
74
return projectManager.IsInstalled(package);
77
public bool IsPackageInstalled(string packageId)
79
return projectManager.IsInstalled(packageId);
82
public IQueryable<IPackage> GetPackages()
84
return projectManager.LocalRepository.GetPackages();
87
public IEnumerable<PackageOperation> GetInstallPackageOperations(IPackage package, bool ignoreDependencies)
89
return packageManager.GetInstallPackageOperations(package, ignoreDependencies);
92
public void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations, bool ignoreDependencies)
94
packageManager.InstallPackage(package, operations, ignoreDependencies);
97
public void UninstallPackage(IPackage package, bool forceRemove, bool removeDependencies)
99
packageManager.UninstallPackage(package, forceRemove, removeDependencies);
102
public void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations, bool updateDependencies)
104
packageManager.UpdatePackage(package, operations, updateDependencies);
107
public InstallPackageAction CreateInstallPackageAction()
109
return new InstallPackageAction(this, packageManagementEvents);
112
public UninstallPackageAction CreateUninstallPackageAction()
114
return new UninstallPackageAction(this, packageManagementEvents);
117
public UpdatePackageAction CreateUpdatePackageAction()
119
return new UpdatePackageAction(this, packageManagementEvents);
122
public Project ConvertToDTEProject()
124
return new Project(msbuildProject);
127
public IEnumerable<IPackage> GetPackagesInReverseDependencyOrder()
129
var packageSorter = new PackageSorter();
131
.GetPackagesByDependencyOrder(projectManager.LocalRepository)