Forgot to add the deletion of the old file
This commit is contained in:
parent
9b43ca3885
commit
2b3389d842
1 changed files with 0 additions and 94 deletions
|
@ -1,94 +0,0 @@
|
|||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Build.Framework;
|
||||
|
||||
public abstract class GetClosestArchive : Microsoft.Build.Utilities.Task, ICancelableTask
|
||||
{
|
||||
[Required]
|
||||
public required string BuiltArchivePath { get; init; }
|
||||
|
||||
[Output]
|
||||
public string ClosestOfficialArchivePath { get; set; } = "";
|
||||
|
||||
private string? _builtVersion;
|
||||
protected string BuiltVersion
|
||||
{
|
||||
get => _builtVersion ?? throw new InvalidOperationException();
|
||||
private set => _builtVersion = value;
|
||||
}
|
||||
|
||||
private string? _builtRid;
|
||||
protected string BuiltRid
|
||||
{
|
||||
get => _builtRid ?? throw new InvalidOperationException();
|
||||
private set => _builtRid = value;
|
||||
}
|
||||
|
||||
private string? _archiveExtension;
|
||||
protected string ArchiveExtension
|
||||
{
|
||||
get => _archiveExtension ?? throw new InvalidOperationException();
|
||||
private set => _archiveExtension = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The name of the package to find the closest official archive for. For example, "dotnet-sdk" or "aspnetcore-runtime".
|
||||
/// </summary>
|
||||
protected abstract string ArchiveName { get; }
|
||||
|
||||
private CancellationTokenSource _cancellationTokenSource = new();
|
||||
protected CancellationToken CancellationToken => _cancellationTokenSource.Token;
|
||||
public void Cancel()
|
||||
{
|
||||
_cancellationTokenSource.Cancel();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the URL of the latest official archive for the given version string and RID.
|
||||
/// </summary>
|
||||
public abstract Task<string?> GetLatestOfficialArchiveUrl();
|
||||
|
||||
public abstract Task<string?> GetClosestOfficialArchiveVersion();
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
return Task.Run(ExecuteAsync).Result;
|
||||
}
|
||||
|
||||
public async Task<bool> ExecuteAsync()
|
||||
{
|
||||
CancellationToken.ThrowIfCancellationRequested();
|
||||
var filename = Path.GetFileName(BuiltArchivePath);
|
||||
(BuiltVersion, BuiltRid, ArchiveExtension) = Archive.GetInfoFromFileName(filename, ArchiveName);
|
||||
Log.LogMessage($"Finding closest official archive for '{ArchiveName}' version '{BuiltVersion}' RID '{BuiltRid}'");
|
||||
|
||||
string? downloadUrl = await GetLatestOfficialArchiveUrl();
|
||||
if (downloadUrl == null)
|
||||
{
|
||||
Log.LogError($"Failed to find a download URL for '{ArchiveName}' version '{BuiltVersion}' RID '{BuiltRid}'");
|
||||
return false;
|
||||
}
|
||||
|
||||
HttpClient client = new HttpClient();
|
||||
|
||||
Log.LogMessage(MessageImportance.High, $"Downloading {downloadUrl}");
|
||||
HttpResponseMessage packageResponse = await client.GetAsync(downloadUrl, CancellationToken);
|
||||
|
||||
var packageUriPath = packageResponse.RequestMessage!.RequestUri!.LocalPath;
|
||||
|
||||
ClosestOfficialArchivePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + $".{ArchiveName}-{BuiltVersion}-{BuiltRid}.closest.{ArchiveExtension}");
|
||||
Log.LogMessage($"Copying {packageUriPath} to {ClosestOfficialArchivePath}");
|
||||
using (var file = File.Create(ClosestOfficialArchivePath))
|
||||
{
|
||||
await packageResponse.Content.CopyToAsync(file, CancellationToken);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue