|
|
|
@ -13,10 +13,38 @@ public class AbpProManager : ITransientDependency, IAbpProManager |
|
|
|
_cliOptions = options.Value; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 获取最后一个版本
|
|
|
|
/// </summary>
|
|
|
|
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)) |
|
|
|
{ |
|
|
|
@ -31,7 +59,7 @@ public class AbpProManager : ITransientDependency, IAbpProManager |
|
|
|
/// <summary>
|
|
|
|
/// 检查版本是否存在
|
|
|
|
/// </summary>
|
|
|
|
public async Task<bool> CheckSourceCodeVersionAsync(string version) |
|
|
|
private async Task<bool> CheckVersionAsync(string version) |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
@ -49,11 +77,11 @@ public class AbpProManager : ITransientDependency, IAbpProManager |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <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 uri = new Uri($"https://github.com/{_cliOptions.Owner}/{_cliOptions.RepositoryId}/archive/refs/tags/{version}.zip"); |
|
|
|
|