diff --git a/.hgsubstate b/.hgsubstate
index bf4413da0..3c8c8a913 100644
--- a/.hgsubstate
+++ b/.hgsubstate
@@ -1 +1 @@
-0000000000000000000000000000000000000000 external/nupack
+230ef1360257ef0ac622f6e85a94323ef2e49cae external/nupack
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj
index ef1c9d653..3790a1baa 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj
@@ -67,9 +67,6 @@
-
- True
-
@@ -113,6 +110,10 @@
+
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}
+ NuPack.Core
+
{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}
Orchard.Framework
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageBuilder.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageBuilder.cs
index d4c478196..a86f2a2bf 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageBuilder.cs
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageBuilder.cs
@@ -1,17 +1,20 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.IO.Packaging;
using System.Linq;
using System.Net.Mime;
using System.Reflection;
using System.Web;
using System.Web.Hosting;
using System.Xml.Linq;
+using NuPack;
using Orchard.Environment.Extensions;
using Orchard.Environment.Extensions.Models;
using Orchard.FileSystems.WebSite;
+using NuPack_PackageBuilder = NuPack.PackageBuilder;
+using NuPack_IPackageBuilder = NuPack.IPackageBuilder;
+
namespace Orchard.Packaging.Services {
[OrchardFeature("PackagingServices")]
public class PackageBuilder : IPackageBuilder {
@@ -36,7 +39,6 @@ namespace Orchard.Packaging.Services {
_webSiteFolder = webSiteFolder;
}
- #region IPackageBuilder Members
public Stream BuildPackage(ExtensionDescriptor extensionDescriptor) {
var context = new CreateContext();
@@ -67,26 +69,14 @@ namespace Orchard.Packaging.Services {
return context.Stream;
}
- #endregion
+
private void SetCoreProperties(CreateContext context, ExtensionDescriptor extensionDescriptor) {
- PackageProperties properties = context.Package.PackageProperties;
- properties.Title = extensionDescriptor.DisplayName ?? extensionDescriptor.Name;
- //properties.Subject = "";
- properties.Creator = extensionDescriptor.Author;
- properties.Keywords = extensionDescriptor.Tags;
- properties.Description = extensionDescriptor.Description;
- //properties.LastModifiedBy = "";
- //properties.Revision = "";
- //properties.LastPrinted = "";
- //properties.Created = "";
- //properties.Modified = "";
- properties.Category = extensionDescriptor.Features.Where(f => f.Name == extensionDescriptor.Name).Select(f => f.Category).FirstOrDefault();
- properties.Identifier = extensionDescriptor.Name;
- properties.ContentType = "Orchard " + extensionDescriptor.ExtensionType;
- //properties.Language = "";
- properties.Version = extensionDescriptor.Version;
- properties.ContentStatus = "";
+ context.Builder.Id = extensionDescriptor.Name;
+ context.Builder.Version = new Version(extensionDescriptor.Version);
+ context.Builder.Title = extensionDescriptor.DisplayName ?? extensionDescriptor.Name;
+ context.Builder.Description = extensionDescriptor.Description;
+ context.Builder.Authors.Add(extensionDescriptor.Author);
}
@@ -125,7 +115,7 @@ namespace Orchard.Packaging.Services {
if (context.SourceFolder.FileExists(context.SourcePath + virtualPath)) {
EmbedVirtualFile(context, virtualPath, MediaTypeNames.Application.Octet);
}
- else if (hintPath != null) {}
+ else if (hintPath != null) { }
}
}
@@ -150,8 +140,7 @@ namespace Orchard.Packaging.Services {
private static void BeginPackage(CreateContext context) {
- context.Stream = new MemoryStream();
- context.Package = Package.Open(context.Stream, FileMode.Create, FileAccess.ReadWrite);
+ context.Builder = new NuPack_PackageBuilder();
}
private static void EstablishPaths(CreateContext context, IWebSiteFolder webSiteFolder, string locationPath, string moduleName, string moduleType) {
@@ -174,24 +163,24 @@ namespace Orchard.Packaging.Services {
return false;
}
- private static Uri EmbedVirtualFile(CreateContext context, string relativePath, string contentType) {
- Uri partUri = PackUriHelper.CreatePartUri(new Uri(context.TargetPath + relativePath, UriKind.Relative));
- PackagePart packagePart = context.Package.CreatePart(partUri, contentType);
- using (Stream stream = packagePart.GetStream(FileMode.Create, FileAccess.Write)) {
- context.SourceFolder.CopyFileTo(context.SourcePath + relativePath, stream, true /*actualContent*/);
- }
- return partUri;
+ private static void EmbedVirtualFile(CreateContext context, string relativePath, string contentType) {
+ var file = new VirtualPackageFile(context.SourceFolder, context.SourcePath + relativePath);
+ context.Builder.Files.Add(file);
}
+
private static void EndPackage(CreateContext context) {
- context.Package.Close();
+ context.Stream = new MemoryStream();
+ context.Builder.Save(context.Stream);
}
#region Nested type: CreateContext
private class CreateContext {
public Stream Stream { get; set; }
- public Package Package { get; set; }
+ //public Package Package { get; set; }
+ //public Manifest Manifest { get; set; }
+ public NuPack_PackageBuilder Builder { get; set; }
public IWebSiteFolder SourceFolder { get; set; }
public string SourcePath { get; set; }
@@ -201,5 +190,29 @@ namespace Orchard.Packaging.Services {
}
#endregion
+
+
+ #region Nested type: CreateContext
+
+ private class VirtualPackageFile : IPackageFile {
+ private readonly IWebSiteFolder _sourceFolder;
+
+ public VirtualPackageFile(IWebSiteFolder sourceFolder, string path) {
+ Path = path;
+ _sourceFolder = sourceFolder;
+ }
+
+ public string Path { get; private set; }
+
+ public Stream GetStream() {
+ var stream = new MemoryStream();
+ _sourceFolder.CopyFileTo(Path, stream);
+ stream.Seek(0, SeekOrigin.Begin);
+ return stream;
+ }
+ }
+
+ #endregion
+
}
}
\ 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 c5fee8195..1aecaf388 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageExpander.cs
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageExpander.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.IO.Packaging;
using System.Linq;
using System.Reflection;
using System.Xml.Linq;
@@ -23,7 +22,6 @@ namespace Orchard.Packaging.Services {
public Localizer T { get; set; }
- #region IPackageExpander Members
public PackageInfo ExpandPackage(Stream packageStream) {
var context = new ExpandContext();
@@ -55,9 +53,8 @@ namespace Orchard.Packaging.Services {
};
}
- #endregion
-
private void ExtractFile(ExpandContext context, string relativePath) {
+#if REFACTORING
Uri partUri = PackUriHelper.CreatePartUri(new Uri(context.SourcePath + relativePath, UriKind.Relative));
PackagePart packagePart = context.Package.GetPart(partUri);
using (Stream packageStream = packagePart.GetStream(FileMode.Open, FileAccess.Read)) {
@@ -71,6 +68,7 @@ namespace Orchard.Packaging.Services {
packageStream.CopyTo(fileStream);
}
}
+#endif
}
private void ExtractProjectFiles(ExpandContext context, params string[] itemGroupTypes) {
@@ -113,16 +111,22 @@ namespace Orchard.Packaging.Services {
}
private void ExtractThemeFiles(ExpandContext context) {
+#if REFACTORING
foreach (var relativePath in from p in context.Package.GetParts()
where p.Uri.ToString().StartsWith("/" + context.ExtensionName + "/", StringComparison.OrdinalIgnoreCase)
select p.Uri.ToString().Substring(("/" + context.ExtensionName + "/").Length)) {
ExtractFile(context, relativePath);
}
+#endif
}
private bool PartExists(ExpandContext context, string relativePath) {
+#if REFACTORING
Uri projectUri = PackUriHelper.CreatePartUri(new Uri(context.SourcePath + relativePath, UriKind.Relative));
return context.Package.PartExists(projectUri);
+#else
+ return false;
+#endif
}
@@ -131,6 +135,7 @@ namespace Orchard.Packaging.Services {
}
private static bool LoadProject(ExpandContext context, string relativePath) {
+#if REFACTORING
Uri projectUri = PackUriHelper.CreatePartUri(new Uri(context.SourcePath + relativePath, UriKind.Relative));
if (!context.Package.PartExists(projectUri)) {
return false;
@@ -139,6 +144,7 @@ namespace Orchard.Packaging.Services {
using (Stream stream = part.GetStream(FileMode.Open, FileAccess.Read)) {
context.Project = XDocument.Load(stream);
}
+#endif
return true;
}
@@ -150,14 +156,19 @@ namespace Orchard.Packaging.Services {
context.Stream = new MemoryStream();
packageStream.CopyTo(context.Stream);
}
+#if REFACTORING
context.Package = Package.Open(context.Stream, FileMode.Open, FileAccess.Read);
+#endif
}
private void EndPackage(ExpandContext context) {
+#if REFACTORING
context.Package.Close();
+#endif
}
private void GetCoreProperties(ExpandContext context) {
+#if REFACTORING
context.ExtensionName = context.Package.PackageProperties.Identifier;
context.ExtensionVersion = context.Package.PackageProperties.Version;
@@ -165,6 +176,7 @@ namespace Orchard.Packaging.Services {
if (contentType.StartsWith(ContentTypePrefix)) {
context.ExtensionType = contentType.Substring(ContentTypePrefix.Length);
}
+#endif
}
private void EstablishPaths(ExpandContext context, IVirtualPathProvider virtualPathProvider) {
@@ -185,7 +197,7 @@ namespace Orchard.Packaging.Services {
private class ExpandContext {
public Stream Stream { get; set; }
- public Package Package { get; set; }
+ //public Package Package { get; set; }
public string ExtensionName { get; set; }
public string ExtensionVersion { get; set; }
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs
index c6869eb8c..8e247535e 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs
@@ -1,6 +1,5 @@
using System;
using System.IO;
-using System.IO.Packaging;
using System.Linq;
using System.Net;
using System.Text;
@@ -57,6 +56,7 @@ namespace Orchard.Packaging.Services {
}
public PackageData Download(string feedItemId) {
+#if REFACTORING
PackagingEntry entry = _packagingSourceManager.GetModuleList().Single(x => x.SyndicationItem.Id == feedItemId);
WebRequest request = WebRequest.Create(entry.PackageStreamUri);
using (WebResponse response = request.GetResponse()) {
@@ -76,6 +76,9 @@ namespace Orchard.Packaging.Services {
}
}
}
+#else
+ throw new NotImplementedException();
+#endif
}
public PackageInfo Install(Stream packageStream) {
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml
index 816701f86..af7b650fa 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml
@@ -23,7 +23,7 @@
}
diff --git a/src/Orchard.sln b/src/Orchard.sln
index 768c6b70a..421e9fbd4 100644
--- a/src/Orchard.sln
+++ b/src/Orchard.sln
@@ -93,6 +93,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Themes", "Orchard.Web\Theme
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.PublishLater", "Orchard.Web\Modules\Orchard.PublishLater\Orchard.PublishLater.csproj", "{C889167C-E52C-4A65-A419-224B3D1B957D}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External", "External", "{104288A3-382E-4032-AF50-FBB5FDAB9EBB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NuPack.Core", "..\external\nupack\NuPack.Core\NuPack.Core.csproj", "{F879F274-EFA0-4157-8404-33A19B4E6AEC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CodeCoverage|Any CPU = CodeCoverage|Any CPU
@@ -492,6 +496,16 @@ Global
{C889167C-E52C-4A65-A419-224B3D1B957D}.FxCop|Any CPU.Build.0 = Release|Any CPU
{C889167C-E52C-4A65-A419-224B3D1B957D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C889167C-E52C-4A65-A419-224B3D1B957D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.CodeCoverage|Any CPU.ActiveCfg = Coverage|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.CodeCoverage|Any CPU.Build.0 = Coverage|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.Coverage|Any CPU.ActiveCfg = Coverage|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.Coverage|Any CPU.Build.0 = Coverage|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.FxCop|Any CPU.ActiveCfg = Coverage|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.FxCop|Any CPU.Build.0 = Coverage|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -533,5 +547,6 @@ Global
{8A4E42CE-79F8-4BE2-8B1E-A6B83432123B} = {383DBA32-4A3E-48D1-AAC3-75377A694452}
{0DFA2E10-96C8-4E05-BC10-B710B97ECCDE} = {383DBA32-4A3E-48D1-AAC3-75377A694452}
{CB70A642-8CEC-4DDE-8C9F-AD08900EC98D} = {74492CBC-7201-417E-BC29-28B4C25A58B0}
+ {F879F274-EFA0-4157-8404-33A19B4E6AEC} = {104288A3-382E-4032-AF50-FBB5FDAB9EBB}
EndGlobalSection
EndGlobal