mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Adding package uninstall command
--HG-- branch : nuget
This commit is contained in:
@@ -60,13 +60,28 @@ namespace Orchard.Packaging.Commands {
|
||||
Context.Output.WriteLine(T("The project's location is not supported"));
|
||||
}
|
||||
|
||||
var packageInfo = _packageManager.Install(packageId, Version, Path.GetFullPath(location), solutionFolder);
|
||||
_packageManager.Install(packageId, Version, Path.GetFullPath(location), solutionFolder);
|
||||
|
||||
foreach(var message in _notifier.List()) {
|
||||
Context.Output.WriteLine(message.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[CommandHelp("package uninstall <packageId> \r\n\t" + "Uninstall a module or a theme.")]
|
||||
[CommandName("package uninstall")]
|
||||
public void UninstallPackage(string packageId) {
|
||||
var solutionFolder = GetSolutionFolder();
|
||||
|
||||
if ( solutionFolder == null ) {
|
||||
Context.Output.WriteLine(T("The project's location is not supported"));
|
||||
}
|
||||
|
||||
_packageManager.Uninstall(packageId, solutionFolder);
|
||||
|
||||
foreach ( var message in _notifier.List() ) {
|
||||
Context.Output.WriteLine(message.Message);
|
||||
}
|
||||
}
|
||||
private static string GetSolutionFolder() {
|
||||
var orchardDirectory = Directory.GetParent(OrchardWebProj);
|
||||
return orchardDirectory.Parent == null ? null : orchardDirectory.Parent.FullName;
|
||||
|
@@ -82,13 +82,13 @@
|
||||
<Compile Include="Services\AtomExtensions.cs" />
|
||||
<Compile Include="Services\FileBaseProjectSystem.cs" />
|
||||
<Compile Include="Services\IPackageBuilder.cs" />
|
||||
<Compile Include="Services\IPackageExpander.cs" />
|
||||
<Compile Include="Services\IPackageInstaller.cs" />
|
||||
<Compile Include="Services\IPackageManager.cs" />
|
||||
<Compile Include="Services\IPackagingSourceManager.cs" />
|
||||
<Compile Include="Services\NugetLogger.cs" />
|
||||
<Compile Include="Services\PackageBuilder.cs" />
|
||||
<Compile Include="Services\PackageData.cs" />
|
||||
<Compile Include="Services\PackageExpander.cs" />
|
||||
<Compile Include="Services\PackageInstaller.cs" />
|
||||
<Compile Include="Services\PackageManager.cs" />
|
||||
<Compile Include="Services\PackagingEntry.cs" />
|
||||
<Compile Include="Services\PackagingSourceManager.cs" />
|
||||
|
@@ -1,6 +1,3 @@
|
||||
using System.IO;
|
||||
using Orchard.Environment.Extensions;
|
||||
|
||||
namespace Orchard.Packaging.Services {
|
||||
public class PackageInfo {
|
||||
public string ExtensionName { get; set; }
|
||||
@@ -9,7 +6,8 @@ namespace Orchard.Packaging.Services {
|
||||
public string ExtensionPath { get; set; }
|
||||
}
|
||||
|
||||
public interface IPackageExpander : IDependency {
|
||||
PackageInfo ExpandPackage(string packageId, string version, string location, string solutionFolder);
|
||||
public interface IPackageInstaller : IDependency {
|
||||
PackageInfo Install(string packageId, string version, string location, string solutionFolder);
|
||||
void Uninstall(string packageId, string solutionFolder);
|
||||
}
|
||||
}
|
@@ -1,9 +1,7 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Orchard.Packaging.Services {
|
||||
public interface IPackageManager : IDependency {
|
||||
PackageData Harvest(string extensionName);
|
||||
PackageInfo Install(string packageId, string version, string location, string solutionFolder);
|
||||
void Uninstall(string packageId, string solutionFolder);
|
||||
}
|
||||
}
|
@@ -8,20 +8,23 @@ using NuGetPackageManager = NuGet.PackageManager;
|
||||
|
||||
namespace Orchard.Packaging.Services {
|
||||
[OrchardFeature("PackagingServices")]
|
||||
public class PackageExpander : IPackageExpander {
|
||||
public class PackageInstaller : IPackageInstaller {
|
||||
private const string PackagesPath = "packages";
|
||||
private const string ProjectPath = "Orchard.Web";
|
||||
|
||||
private readonly INotifier _notifier;
|
||||
|
||||
public PackageExpander(INotifier notifier) {
|
||||
public PackageInstaller(INotifier notifier) {
|
||||
_notifier = notifier;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public PackageInfo ExpandPackage(string packageId, string version, string location, string solutionFolder) {
|
||||
public PackageInfo Install(string packageId, string version, string location, string solutionFolder) {
|
||||
|
||||
var packagesPath = Path.Combine(solutionFolder, "packages"); // where to download/uncompress packages
|
||||
var projectPath = Path.Combine(solutionFolder, "Orchard.Web"); // where to install packages (in the project's folder)
|
||||
var packagesPath = Path.Combine(solutionFolder, PackagesPath); // where to download/uncompress packages
|
||||
var projectPath = Path.Combine(solutionFolder, ProjectPath); // where to install packages (in the project's folder)
|
||||
var logger = new NugetLogger(_notifier);
|
||||
|
||||
// instantiates the appropriate package repository
|
||||
@@ -61,5 +64,31 @@ namespace Orchard.Packaging.Services {
|
||||
};
|
||||
}
|
||||
|
||||
public void Uninstall(string packageId, string solutionFolder) {
|
||||
var packagesPath = Path.Combine(solutionFolder, PackagesPath); // where to download/uncompress packages
|
||||
var projectPath = Path.Combine(solutionFolder, ProjectPath); // where to install packages (in the project's folder)
|
||||
var logger = new NugetLogger(_notifier);
|
||||
|
||||
// instantiates the appropriate package repository
|
||||
var packageRepository = PackageRepositoryFactory.Default.CreateRepository(new PackageSource("Default", packagesPath));
|
||||
|
||||
var packageManager = new NuGetPackageManager(
|
||||
packageRepository,
|
||||
new DefaultPackagePathResolver(packagesPath),
|
||||
new PhysicalFileSystem(packagesPath) { Logger = logger }
|
||||
) { Logger = logger };
|
||||
|
||||
// specifically tells to ignore dependencies
|
||||
packageManager.UninstallPackage(packageId);
|
||||
|
||||
var projectManager = new ProjectManager(
|
||||
new LocalPackageRepository(packagesPath), // source repository for the package to install
|
||||
new DefaultPackagePathResolver(packagesPath),
|
||||
new FileBasedProjectSystem(projectPath) { Logger = logger } // the location of the project (where to copy the content files)
|
||||
) { Logger = logger };
|
||||
|
||||
// add the package to the project
|
||||
projectManager.RemovePackageReference(packageId);
|
||||
}
|
||||
}
|
||||
}
|
@@ -7,12 +7,12 @@ namespace Orchard.Packaging.Services {
|
||||
public class PackageManager : IPackageManager {
|
||||
private readonly IExtensionManager _extensionManager;
|
||||
private readonly IPackageBuilder _packageBuilder;
|
||||
private readonly IPackageExpander _packageExpander;
|
||||
private readonly IPackageInstaller _packageExpander;
|
||||
|
||||
public PackageManager(
|
||||
IExtensionManager extensionManager,
|
||||
IPackageBuilder packageBuilder,
|
||||
IPackageExpander packageExpander) {
|
||||
IPackageInstaller packageExpander) {
|
||||
_extensionManager = extensionManager;
|
||||
_packageBuilder = packageBuilder;
|
||||
_packageExpander = packageExpander;
|
||||
@@ -34,9 +34,12 @@ namespace Orchard.Packaging.Services {
|
||||
}
|
||||
|
||||
public PackageInfo Install(string packageId, string version, string location, string solutionFolder) {
|
||||
return _packageExpander.ExpandPackage(packageId, version, location, solutionFolder);
|
||||
return _packageExpander.Install(packageId, version, location, solutionFolder);
|
||||
}
|
||||
|
||||
public void Uninstall(string packageId, string solutionFolder) {
|
||||
_packageExpander.Uninstall(packageId, solutionFolder);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user