diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Commands/PackagingCommands.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Commands/PackagingCommands.cs index b5b8d36b0..369e314be 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Commands/PackagingCommands.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Commands/PackagingCommands.cs @@ -3,6 +3,7 @@ using System.Web.Hosting; using Orchard.Commands; using Orchard.Environment.Extensions; using Orchard.Packaging.Services; +using Orchard.UI.Notify; namespace Orchard.Packaging.Commands { [OrchardFeature("Orchard.Packaging")] @@ -11,9 +12,11 @@ namespace Orchard.Packaging.Commands { private const string CreatePackagePath = "CreatedPackages"; private readonly IPackageManager _packageManager; + private readonly INotifier _notifier; - public PackagingCommands(IPackageManager packageManager) { + public PackagingCommands(IPackageManager packageManager, INotifier notifier) { _packageManager = packageManager; + _notifier = notifier; } [OrchardSwitch] @@ -59,7 +62,10 @@ namespace Orchard.Packaging.Commands { } var packageInfo = _packageManager.Install(packageId, Version, location, solutionFolder); - Context.Output.WriteLine(T("Package \"{0}\" successfully installed at \"{1}\"", packageInfo.ExtensionName, packageInfo.ExtensionPath)); + + foreach(var message in _notifier.List()) { + Context.Output.WriteLine(message.Message); + } } private static string GetSolutionFolder() { diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj index 72ee19cd5..d43229759 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj @@ -81,6 +81,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/NugetLogger.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/NugetLogger.cs new file mode 100644 index 000000000..551b76c8c --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/NugetLogger.cs @@ -0,0 +1,27 @@ +using System; +using NuGet; +using Orchard.Localization; +using Orchard.UI.Notify; + +namespace Orchard.Packaging.Services { + public class NugetLogger : ILogger { + private readonly INotifier _notifier; + + public NugetLogger(INotifier notifier) { + _notifier = notifier; + } + + public void Log(MessageLevel level, string message, params object[] args) { + switch ( level ) { + case MessageLevel.Debug: + break; + case MessageLevel.Info: + _notifier.Information(new LocalizedString(String.Format(message, args))); + break; + case MessageLevel.Warning: + _notifier.Warning(new LocalizedString(String.Format(message, args))); + break; + } + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageExpander.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageExpander.cs index ef36ea6bf..229dd0563 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageExpander.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageExpander.cs @@ -3,24 +3,26 @@ using System.IO; using NuGet; using Orchard.Environment.Extensions; using Orchard.Localization; - +using Orchard.UI.Notify; using NuGetPackageManager = NuGet.PackageManager; namespace Orchard.Packaging.Services { [OrchardFeature("PackagingServices")] public class PackageExpander : IPackageExpander { + private readonly INotifier _notifier; - public PackageExpander() { + public PackageExpander(INotifier notifier) { + _notifier = notifier; T = NullLocalizer.Instance; } public Localizer T { get; set; } - public PackageInfo ExpandPackage(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 logger = new NugetLogger(_notifier); // instantiates the appropriate package repository var packageRepository = Uri.IsWellFormedUriString(location, UriKind.Absolute) @@ -38,8 +40,8 @@ namespace Orchard.Packaging.Services { var packageManager = new NuGetPackageManager( packageRepository, new DefaultPackagePathResolver(location), - new FileBasedProjectSystem(packagesPath) - ); + new FileBasedProjectSystem(packagesPath) { Logger = logger } + ) {Logger = logger}; // specifically tells to ignore dependencies packageManager.InstallPackage(package, ignoreDependencies: true); @@ -47,16 +49,15 @@ namespace Orchard.Packaging.Services { var projectManager = new ProjectManager( new LocalPackageRepository(packagesPath), // source repository for the package to install new DefaultPackagePathResolver(location), - new FileBasedProjectSystem(projectPath), // the location of the project (where to copy the content files) + new FileBasedProjectSystem(projectPath) { Logger = logger }, // the location of the project (where to copy the content files) new LocalPackageRepository(packagesPath) // the location of the uncompressed package, used to check if the package is already installed - ); + ) {Logger = logger}; // add the package to the project projectManager.AddPackageReference(packageId, packageVersion); - return new PackageInfo { - ExtensionName = package.Title, + ExtensionName = package.Title ?? package.Id, ExtensionVersion = package.Version.ToString(), ExtensionType = String.Empty, // todo: assign value ExtensionPath = projectPath