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;
6
using ICSharpCode.Core;
7
using ICSharpCode.Core.Services;
8
using ICSharpCode.SharpDevelop.Internal.Templates;
9
using ICSharpCode.SharpDevelop.Project;
11
namespace ICSharpCode.PackageManagement
13
public class InstallProjectTemplatePackagesCommand : AbstractCommand
15
IPackageRepositoryCache packageRepositoryCache;
16
IPackageManagementProjectService projectService;
17
IMessageService messageService;
18
ILoggingService loggingService;
20
public InstallProjectTemplatePackagesCommand()
22
PackageManagementServices.ProjectTemplatePackageRepositoryCache,
23
PackageManagementServices.ProjectService,
24
ServiceManager.Instance.MessageService,
25
ServiceManager.Instance.LoggingService)
29
public InstallProjectTemplatePackagesCommand(
30
IPackageRepositoryCache packageRepositoryCache,
31
IPackageManagementProjectService projectService,
32
IMessageService messageService,
33
ILoggingService loggingService)
35
this.packageRepositoryCache = packageRepositoryCache;
36
this.projectService = projectService;
37
this.messageService = messageService;
38
this.loggingService = loggingService;
41
public override void Run()
45
} catch (Exception ex) {
50
void DisplayError(Exception ex)
52
loggingService.Error(null, ex);
53
messageService.ShowError(ex.Message);
56
void InstallPackages()
58
foreach (MSBuildBasedProject project in GetCreatedProjects()) {
59
IPackageReferencesForProject packageReferences = CreatePackageReferencesForProject(project);
60
packageReferences.RemovePackageReferences();
61
packageReferences.InstallPackages();
65
IEnumerable<MSBuildBasedProject> GetCreatedProjects()
67
var createInfo = Owner as ProjectCreateInformation;
68
var newCreatedProjects = new NewProjectsCreated(createInfo, projectService);
69
return newCreatedProjects.GetProjects();
72
IPackageReferencesForProject CreatePackageReferencesForProject(MSBuildBasedProject project)
74
return CreatePackageReferencesForProject(project, packageRepositoryCache);
77
protected virtual IPackageReferencesForProject
78
CreatePackageReferencesForProject(MSBuildBasedProject project, IPackageRepositoryCache packageRepositoryCache)
80
return new PackageReferencesForProject(project, packageRepositoryCache);