protected override async Task <GetItemResult> ExecuteAsync(GetItemMessage message) { return(await Task.Run <GetItemResult> (() => { var targetPath = Path.GetFullPath(Path.Combine( MessagingContext.GetBuildPath(), message.AppName, message.SessionId, PlatformPath.GetPathForCurrentPlatform(message.ItemSpec))); var result = new GetItemResult(); if (File.Exists(targetPath)) { result.FileExists = true; // Avoiding sending the payload if the file is too large based on the defined limit by the the client if (new System.IO.FileInfo(targetPath).Length > message.LimitLength) { result.FileLengthExceedsLimit = true; } else { result.Content = File.ReadAllBytes(targetPath); } } return result; }).ConfigureAwait(continueOnCapturedContext: false)); }
protected override async Task <CompareItemsResult> ExecuteAsync(CompareItemsMessage message) { return(await Task.Run(() => { var buildPath = Path.Combine(MessagingContext.GetBuildPath(), message.AppName, message.SessionId); var files = new List <string> (); using (var hashAlgorithm = Hash.GetAlgorithm()) { foreach (var file in message.Items) { var targetPath = Path.Combine(buildPath, PlatformPath.GetPathForCurrentPlatform(file.ItemSpec)); if (!File.Exists(targetPath)) { files.Add(file.ItemSpec); } else { using (var stream = File.OpenRead(targetPath)) { var localHash = hashAlgorithm.ComputeHashAsString(stream); if (file.Hash != localHash) { files.Add(file.ItemSpec); } } } } } return new CompareItemsResult { MissingFiles = files }; }).ConfigureAwait(continueOnCapturedContext: false)); }
public override bool Execute() { if (!ShouldExecuteRemotely()) { return(base.Execute()); } try { BTouchToolPath = PlatformPath.GetPathForCurrentPlatform(BTouchToolPath); BaseLibDll = PlatformPath.GetPathForCurrentPlatform(BaseLibDll); TaskItemFixer.FixFrameworkItemSpecs(Log, item => OutputPath, TargetFramework.Identifier, References.Where(x => x.IsFrameworkItem()).ToArray()); TaskItemFixer.FixItemSpecs(Log, item => OutputPath, References.Where(x => !x.IsFrameworkItem()).ToArray()); var taskRunner = new TaskRunner(SessionId, BuildEngine4); var success = taskRunner.RunAsync(this).Result; if (success) { GetGeneratedSourcesAsync(taskRunner).Wait(); } return(success); } catch (Exception ex) { Log.LogErrorFromException(ex); return(false); } }
async System.Threading.Tasks.Task GetGeneratedSourcesAsync(TaskRunner taskRunner) { await taskRunner.GetFileAsync(GeneratedSourcesFileList).ConfigureAwait(continueOnCapturedContext: false); var localGeneratedSourcesFileNames = new List <string> (); var generatedSourcesFileNames = File.ReadAllLines(GeneratedSourcesFileList); foreach (var generatedSourcesFileName in generatedSourcesFileNames) { var localRelativePath = GetLocalRelativePath(generatedSourcesFileName); await taskRunner.GetFileAsync(localRelativePath).ConfigureAwait(continueOnCapturedContext: false); var localGeneratedSourcesFileName = PlatformPath.GetPathForCurrentPlatform(localRelativePath); localGeneratedSourcesFileNames.Add(localGeneratedSourcesFileName); } File.WriteAllLines(GeneratedSourcesFileList, localGeneratedSourcesFileNames); }
protected override async Task ExecuteAsync(CopyItemMessage message) { await Task.Run(async() => { var targetPath = Path.GetFullPath(Path.Combine( MessagingContext.GetBuildPath(), message.AppName, message.SessionId, PlatformPath.GetPathForCurrentPlatform(message.ItemSpec))); if (File.Exists(targetPath)) { File.Delete(targetPath); } else if (!Directory.Exists(Path.GetDirectoryName(targetPath))) { Directory.CreateDirectory(Path.GetDirectoryName(targetPath)); } using (var file = File.Create(targetPath)) using (var stream = new MemoryStream(message.Content)) await stream.CopyToAsync(file).ConfigureAwait(continueOnCapturedContext: false); }); }