[DittoTask] If Source is a folder, add all its content as ITaskItem (#14375)

* [DittoTask] If Source is a folder, add all its content as ITaskItem

* [DittoTask] Undoing undo...
* Accidentally hit Cmd+Z and removed an using statement

Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
Co-authored-by: Alex Soto <alex@alexsoto.me>
This commit is contained in:
Israel Soto 2022-03-14 14:18:53 -06:00 коммит произвёл GitHub
Родитель 174aca5b04
Коммит b859c6d8f3
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 11 добавлений и 1 удалений

Просмотреть файл

@ -2,6 +2,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Xamarin.Messaging.Build.Client;
namespace Xamarin.MacDev.Tasks
@ -29,7 +30,16 @@ namespace Xamarin.MacDev.Tasks
BuildConnection.CancelAsync (SessionId, BuildEngine4).Wait ();
}
public IEnumerable<ITaskItem> GetAdditionalItemsToBeCopied () => Enumerable.Empty<ITaskItem> ();
public IEnumerable<ITaskItem> GetAdditionalItemsToBeCopied ()
{
if (!Directory.Exists(Source.ItemSpec))
return Enumerable.Empty<ITaskItem> ();
// TaskRunner doesn't know how to copy directories to Mac but `ditto` can take directories (and that's why we use ditto often).
// If Source is a directory path, let's add each file within it as an TaskItem, as TaskRunner knows how to copy files to Mac.
return Directory.GetFiles (Source.ItemSpec, "*", SearchOption.AllDirectories)
.Select(f => new TaskItem(f));
}
public bool ShouldCopyToBuildServer (ITaskItem item) => true;