Browse Source

Minor refactoring for CLI

pull/1126/head
Halil ibrahim Kalkan 8 years ago
parent
commit
92f5bc65d1
  1. 46
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs
  2. 14
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs

46
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs

@ -39,7 +39,7 @@ namespace Volo.Abp.Cli
Logger.LogInformation($"ABP CLI, version {GetCliVersion()}.");
Logger.LogInformation("https://abp.io");
await CheckHasNewVersion();
await CheckForNewVersion();
var commandLineArgs = CommandLineArgumentParser.Parse(args);
var commandType = CommandSelector.Select(commandLineArgs);
@ -63,25 +63,47 @@ namespace Volo.Abp.Cli
}
}
private async Task CheckHasNewVersion()
private async Task CheckForNewVersion()
{
var currentVersion = GetCliVersion();
var latestVersion = await NuGetService.GetLatestVersionAsync("Volo.Abp.Cli");
if (!string.IsNullOrEmpty(latestVersion) && currentVersion != latestVersion)
try
{
var currentVersion = GetCliVersion();
var latestVersion = await NuGetService.GetLatestVersionOrNullAsync("Volo.Abp.Cli");
if (!latestVersion.IsNullOrEmpty() && currentVersion != latestVersion)
{
Logger.LogInformation("");
Logger.LogWarning("ABP CLI has a newer version. Please update to get the latest features and fixes.");
Logger.LogWarning("");
Logger.LogWarning("Update Command: ");
Logger.LogWarning(" dotnet tool update -g Volo.Abp.Cli");
Logger.LogWarning("");
}
}
catch (Exception e)
{
Logger.LogInformation("");
Logger.LogWarning("Cli has a new version. Please update.");
Logger.LogWarning("Update Command: dotnet tool update -g Volo.Abp.Cli");
Logger.LogWarning("Could not get the latest version infom from NuGet.org:");
Logger.LogWarning(e.Message);
}
}
private static string GetCliVersion()
{
return typeof(CliService)
var version = typeof(CliService)
.Assembly
.GetFileVersion()
.RemovePostFix(".0");
.GetFileVersion();
/* Assembly versions are like "2.4.0.0", but NuGet removes the last "0" here,
* like "2.4.0".
* So, we need to remove it from the assembly version to match to the NuGet version.
*/
if (version.Split('.').Length == 4)
{
version = version.RemovePostFix(".0");
}
return version;
}
}
}

14
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs

@ -1,11 +1,11 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Volo.Abp.Json;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Json;
using Volo.Abp.Threading;
namespace Volo.Abp.Cli.NuGet
@ -15,7 +15,6 @@ namespace Volo.Abp.Cli.NuGet
protected IJsonSerializer JsonSerializer { get; }
protected ICancellationTokenProvider CancellationTokenProvider { get; }
public NuGetService(
IJsonSerializer jsonSerializer,
ICancellationTokenProvider cancellationTokenProvider)
@ -24,15 +23,17 @@ namespace Volo.Abp.Cli.NuGet
CancellationTokenProvider = cancellationTokenProvider;
}
public async Task<string> GetLatestVersionAsync(string packageId,bool includePreviews = false)
public async Task<string> GetLatestVersionOrNullAsync(string packageId, bool includePreviews = false)
{
using (var client = new HttpClient())
{
client.Timeout = TimeSpan.FromSeconds(30);
var responseMessage = await client.GetAsync(
$"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json",
CancellationTokenProvider.Token);
CancellationTokenProvider.Token
);
if (!responseMessage.IsSuccessStatusCode)
{
throw new Exception("Remote server returns error! HTTP status code: " + responseMessage.StatusCode);
@ -41,6 +42,7 @@ namespace Volo.Abp.Cli.NuGet
var result = await responseMessage.Content.ReadAsStringAsync();
var versions = JsonSerializer.Deserialize<NuGetVersionResultDto>(result).Versions;
if (!includePreviews)
{
versions = versions

Loading…
Cancel
Save