You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.5 KiB
83 lines
2.5 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) |
|
|
|
using System; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using ICSharpCode.Core; |
|
using ICSharpCode.SharpDevelop; |
|
using ICSharpCode.SharpDevelop.Project; |
|
using ICSharpCode.SharpDevelop.Templates; |
|
|
|
namespace ICSharpCode.PackageManagement |
|
{ |
|
public class InstallProjectTemplatePackagesCommand : AbstractCommand |
|
{ |
|
IPackageRepositoryCache packageRepositoryCache; |
|
IPackageManagementProjectService projectService; |
|
IMessageService messageService; |
|
ILoggingService loggingService; |
|
|
|
public InstallProjectTemplatePackagesCommand() |
|
: this( |
|
PackageManagementServices.ProjectTemplatePackageRepositoryCache, |
|
PackageManagementServices.ProjectService, |
|
SD.MessageService, |
|
SD.Log) |
|
{ |
|
} |
|
|
|
public InstallProjectTemplatePackagesCommand( |
|
IPackageRepositoryCache packageRepositoryCache, |
|
IPackageManagementProjectService projectService, |
|
IMessageService messageService, |
|
ILoggingService loggingService) |
|
{ |
|
this.packageRepositoryCache = packageRepositoryCache; |
|
this.projectService = projectService; |
|
this.messageService = messageService; |
|
this.loggingService = loggingService; |
|
} |
|
|
|
public override void Run() |
|
{ |
|
try { |
|
InstallPackages(); |
|
} catch (Exception ex) { |
|
DisplayError(ex); |
|
} |
|
} |
|
|
|
void DisplayError(Exception ex) |
|
{ |
|
loggingService.Error(null, ex); |
|
messageService.ShowError(ex.Message); |
|
} |
|
|
|
void InstallPackages() |
|
{ |
|
foreach (MSBuildBasedProject project in GetCreatedProjects()) { |
|
IPackageReferencesForProject packageReferences = CreatePackageReferencesForProject(project); |
|
packageReferences.RemovePackageReferences(); |
|
packageReferences.InstallPackages(); |
|
} |
|
} |
|
|
|
IEnumerable<MSBuildBasedProject> GetCreatedProjects() |
|
{ |
|
var createInfo = Owner as ProjectTemplateResult; |
|
return createInfo != null ? createInfo.NewProjects.OfType<MSBuildBasedProject>() : Enumerable.Empty<MSBuildBasedProject>(); |
|
} |
|
|
|
IPackageReferencesForProject CreatePackageReferencesForProject(MSBuildBasedProject project) |
|
{ |
|
return CreatePackageReferencesForProject(project, packageRepositoryCache); |
|
} |
|
|
|
protected virtual IPackageReferencesForProject |
|
CreatePackageReferencesForProject(MSBuildBasedProject project, IPackageRepositoryCache packageRepositoryCache) |
|
{ |
|
return new PackageReferencesForProject(project, packageRepositoryCache); |
|
} |
|
} |
|
}
|
|
|