Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 37 additions & 18 deletions MSBuild.NugetContentRestore.Tasks/NugetContentRestoreTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System;

namespace MSBuild.NugetContentRestore.Tasks
{
Expand All @@ -18,7 +19,7 @@ public class NugetContentRestoreTask : Task

#region Private Members

private readonly string[] _folders = new[] { "Scripts", "Images", "fonts", "content" };
private readonly string[] _folders = new[] { "Scripts", "Images", "fonts", "Content" };
private readonly string[] _ignoreFilePatterns = new[] { "*.transform", "*.install.xdt", "*.pp" };

private string _configFileFullPath;
Expand Down Expand Up @@ -79,9 +80,10 @@ public override bool Execute()
Log.LogMessage(MessageImportance.Low, "NugetContentRestore :: {0} :: FullPath='{1}'", package.FolderName, packageFullPath);
if (!Directory.Exists(packageFullPath)) continue;

var packageContentsFullPath = Path.Combine(packageFullPath, "Content");
var packageContentsFullPath = PathCombineIfExists(packageFullPath, "content");
if (packageContentsFullPath == null) continue;

Log.LogMessage(MessageImportance.Low, "NugetContentRestore :: {0} :: ContentsFullPath='{1}'", package.FolderName, packageContentsFullPath);
if (!Directory.Exists(packageContentsFullPath)) continue;

// Create Regex List for Ignore File Patterns
var ignoreFilePatternsArray = _ignoreFilePatterns;
Expand All @@ -93,25 +95,12 @@ public override bool Execute()

// Restore Package Content for predefined folders (_folders)
var filePatterns = ignoreFilePatterns as Wildcard[] ?? ignoreFilePatterns.ToArray();
foreach (var folder in _folders)
{
var sourceFolderInfo = new DirectoryInfo(Path.Combine(packageContentsFullPath, folder));
if (!sourceFolderInfo.Exists) continue;

Log.LogMessage(MessageImportance.High, "NugetContentRestore :: {0} :: {1} :: Restoring content files", package.FolderName, folder);
sourceFolderInfo.CopyTo(Path.Combine(ProjectDir, folder), true, filePatterns.ToArray(), EnableSmartRestore);
}
CopyFolders(package, packageContentsFullPath, _folders, filePatterns);

// Restore Package Content for additional folders (AdditionalFolder)
if (AdditionalFolders == null) continue;
foreach (var folder in AdditionalFolders)
{
var sourceFolderInfo = new DirectoryInfo(Path.Combine(packageContentsFullPath, folder));
if (!sourceFolderInfo.Exists) continue;

Log.LogMessage(MessageImportance.High, "NugetContentRestore :: {0} :: {1} :: Restoring content files", package.FolderName, folder);
sourceFolderInfo.CopyTo(Path.Combine(ProjectDir, folder), true, filePatterns.ToArray(), EnableSmartRestore);
}
CopyFolders(package, packageContentsFullPath, AdditionalFolders, filePatterns);
}

var elapsed = System.DateTime.Now - startTime;
Expand Down Expand Up @@ -158,6 +147,36 @@ private IEnumerable<Package> GetPackages()
}
return packages;
}

private static string PathCombineIfExists(string packageFullPath, string folder)
{
var subFolders = Directory.GetDirectories(packageFullPath);
foreach (var subFolder in subFolders)
{
if (Path.GetFileName(subFolder).ToLower() == folder.ToLower())
return subFolder;
}

return null;
}

private void CopyFolders(Package package, string packageContentsFullPath, string[] folders, Wildcard[] filePatterns)
{
foreach (var f1 in folders)
{
var folder = PathCombineIfExists(packageContentsFullPath, f1);
if (folder == null) continue;

var copyToFolder = Path.GetFileName(f1);

var destinationFolder = Path.Combine(ProjectDir, copyToFolder);
Log.LogMessage(MessageImportance.High, "NugetContentRestore :: {0} :: Restoring files {1} -> {2}", package.FolderName, folder, destinationFolder);

var sourceFolderInfo = new DirectoryInfo(folder);
sourceFolderInfo.CopyTo(destinationFolder, true, filePatterns.ToArray(), EnableSmartRestore);
}

}
#endregion

}
Expand Down