public IEnumerable<IFile> Install(PackageDefinition package, DirectoryPath root)
{
var result = new List<FilePath>();
var paths = new FilePathCollection(PathComparer.Default);
// InstallPackage the package.
var packagePath = InstallPackage(package, root);
var packageDirectory = _fileSystem.GetDirectory(packagePath);
if (package.Filters != null && package.Filters.Count > 0)
{
// Get all files matching the filters.
foreach (var filter in package.Filters)
{
var pattern = string.Concat(packagePath.FullPath, "/", filter.TrimStart('/', '\\'));
paths.Add(_globber.GetFiles(pattern));
}
}
else
{
// Do a recursive search in the package directory.
paths.Add(packageDirectory.
GetFiles("*", SearchScope.Recursive)
.Select(file => file.Path));
}
if (paths.Count > 0)
{
result.AddRange(paths);
}
return result.Select(path => _fileSystem.GetFile(path));
}