public static FileMapping ExpandFileMapping(string baseDirectory, FileMapping fileMapping)
{
if (fileMapping == null)
{
return null;
}
if (fileMapping.Expanded) return fileMapping;
var expandedFileMapping = new FileMapping();
foreach (var item in fileMapping.Items)
{
// Use local variable to avoid different items influencing each other
var src = Path.Combine(baseDirectory, item.SourceFolder ?? string.Empty);
var options = GetMatchOptionsFromItem(item);
var files = FileGlob.GetFiles(src, item.Files, item.Exclude, options).ToArray();
if (files.Length == 0)
{
var currentSrcFullPath = string.IsNullOrEmpty(src) ? Environment.CurrentDirectory : Path.GetFullPath(src);
Logger.LogInfo($"No files are found with glob pattern {item.Files.ToDelimitedString() ?? "<none>"}, excluding {item.Exclude.ToDelimitedString() ?? "<none>"}, under directory \"{currentSrcFullPath}\"");
}
expandedFileMapping.Add(
new FileMappingItem
{
SourceFolder = src,
Files = new FileItems(files),
DestinationFolder = item.DestinationFolder
});
}
expandedFileMapping.Expanded = true;
return expandedFileMapping;
}