зеркало из https://github.com/dotnet/sdk.git
61 строка
2.0 KiB
C#
61 строка
2.0 KiB
C#
// Licensed to the .NET Foundation under one or more agreements.
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
|
|
|
using Microsoft.Build.Framework;
|
|
|
|
namespace Microsoft.DotNet.SdkCustomHelix.Sdk
|
|
{
|
|
public sealed class CreateLocalHelixTestLayout : Build.Utilities.Task
|
|
{
|
|
[Required]
|
|
public ITaskItem[] HelixCorrelationPayload { get; set; }
|
|
|
|
[Required]
|
|
public string TestOutputDirectory { get; set; }
|
|
|
|
public override bool Execute()
|
|
{
|
|
foreach (var payload in HelixCorrelationPayload)
|
|
{
|
|
var copyfrom = new DirectoryInfo(payload.GetMetadata("PayloadDirectory"));
|
|
var relativeDestinationPathOnHelix = payload.GetMetadata("Destination");
|
|
var destination = new DirectoryInfo(Path.Combine(TestOutputDirectory, relativeDestinationPathOnHelix));
|
|
|
|
if (Directory.Exists(destination.FullName))
|
|
{
|
|
Directory.Delete(destination.FullName, true);
|
|
}
|
|
|
|
CopyAll(copyfrom, destination);
|
|
}
|
|
Log.LogMessage($"set HELIX_CORRELATION_PAYLOAD={TestOutputDirectory}");
|
|
return true;
|
|
}
|
|
|
|
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
|
|
{
|
|
if (source.FullName.ToLower() == target.FullName.ToLower())
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (Directory.Exists(target.FullName) == false)
|
|
{
|
|
Directory.CreateDirectory(target.FullName);
|
|
}
|
|
|
|
foreach (FileInfo fi in source.GetFiles())
|
|
{
|
|
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
|
|
}
|
|
|
|
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
|
|
{
|
|
DirectoryInfo nextTargetSubDir =
|
|
target.CreateSubdirectory(diSourceSubDir.Name);
|
|
CopyAll(diSourceSubDir, nextTargetSubDir);
|
|
}
|
|
}
|
|
}
|
|
}
|