Browse Source

feat: cli添加policy重试机制

pull/126/head
wangjun 3 years ago
parent
commit
e2ffe35971
  1. 34
      aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Github/AbpProManager.cs

34
aspnet-core/frameworks/src/Lion.AbpPro.Cli.Core/Lion/AbpPro/Cli/Github/AbpProManager.cs

@ -13,10 +13,38 @@ public class AbpProManager : ITransientDependency, IAbpProManager
_cliOptions = options.Value; _cliOptions = options.Value;
} }
/// <summary> /// <summary>
/// 获取最后一个版本 /// 获取最后一个版本
/// </summary> /// </summary>
public async Task<string> GetLatestSourceCodeVersionAsync() public async Task<string> GetLatestSourceCodeVersionAsync()
{
return await Policy.Handle<Exception>().RetryAsync(5).ExecuteAsync(async () => await GetLatestVersionAsync());
}
/// <summary>
/// 检查版本是否存在
/// </summary>
public async Task<bool> CheckSourceCodeVersionAsync(string version)
{
return await Policy.Handle<Exception>().RetryAsync(5).ExecuteAsync(async () => await CheckVersionAsync(version));
}
/// <summary>
/// 下载源码
/// </summary>
public async Task<byte[]> DownloadAsync(string version, string outputPath)
{
return await Policy.Handle<Exception>().RetryAsync(5).ExecuteAsync(async () => await DownloadSourceCodeAsync(version, outputPath));
}
/// <summary>
/// 获取最后一个版本
/// </summary>
private async Task<string> GetLatestVersionAsync()
{ {
var github = new GitHubClient(new ProductHeaderValue(_cliOptions.RepositoryId)) var github = new GitHubClient(new ProductHeaderValue(_cliOptions.RepositoryId))
{ {
@ -31,7 +59,7 @@ public class AbpProManager : ITransientDependency, IAbpProManager
/// <summary> /// <summary>
/// 检查版本是否存在 /// 检查版本是否存在
/// </summary> /// </summary>
public async Task<bool> CheckSourceCodeVersionAsync(string version) private async Task<bool> CheckVersionAsync(string version)
{ {
try try
{ {
@ -49,11 +77,11 @@ public class AbpProManager : ITransientDependency, IAbpProManager
return false; return false;
} }
} }
/// <summary> /// <summary>
/// 下载源码 /// 下载源码
/// </summary> /// </summary>
public async Task<byte[]> DownloadAsync(string version, string outputPath) private async Task<byte[]> DownloadSourceCodeAsync(string version, string outputPath)
{ {
var httpClient = _httpClientFactory.CreateClient(); var httpClient = _httpClientFactory.CreateClient();
var uri = new Uri($"https://github.com/{_cliOptions.Owner}/{_cliOptions.RepositoryId}/archive/refs/tags/{version}.zip"); var uri = new Uri($"https://github.com/{_cliOptions.Owner}/{_cliOptions.RepositoryId}/archive/refs/tags/{version}.zip");

Loading…
Cancel
Save