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($"ABP CLI, version {GetCliVersion()}.");
Logger.LogInformation("https://abp.io"); Logger.LogInformation("https://abp.io");
await CheckHasNewVersion(); await CheckForNewVersion();
var commandLineArgs = CommandLineArgumentParser.Parse(args); var commandLineArgs = CommandLineArgumentParser.Parse(args);
var commandType = CommandSelector.Select(commandLineArgs); var commandType = CommandSelector.Select(commandLineArgs);
@ -63,25 +63,47 @@ namespace Volo.Abp.Cli
} }
} }
private async Task CheckHasNewVersion() private async Task CheckForNewVersion()
{ {
var currentVersion = GetCliVersion(); try
var latestVersion = await NuGetService.GetLatestVersionAsync("Volo.Abp.Cli"); {
var currentVersion = GetCliVersion();
if (!string.IsNullOrEmpty(latestVersion) && currentVersion != latestVersion) 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("Could not get the latest version infom from NuGet.org:");
Logger.LogWarning("Cli has a new version. Please update."); Logger.LogWarning(e.Message);
Logger.LogWarning("Update Command: dotnet tool update -g Volo.Abp.Cli");
} }
} }
private static string GetCliVersion() private static string GetCliVersion()
{ {
return typeof(CliService) var version = typeof(CliService)
.Assembly .Assembly
.GetFileVersion() .GetFileVersion();
.RemovePostFix(".0");
/* 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;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using Newtonsoft.Json;
using Volo.Abp.Json;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Json;
using Volo.Abp.Threading; using Volo.Abp.Threading;
namespace Volo.Abp.Cli.NuGet namespace Volo.Abp.Cli.NuGet
@ -15,7 +15,6 @@ namespace Volo.Abp.Cli.NuGet
protected IJsonSerializer JsonSerializer { get; } protected IJsonSerializer JsonSerializer { get; }
protected ICancellationTokenProvider CancellationTokenProvider { get; } protected ICancellationTokenProvider CancellationTokenProvider { get; }
public NuGetService( public NuGetService(
IJsonSerializer jsonSerializer, IJsonSerializer jsonSerializer,
ICancellationTokenProvider cancellationTokenProvider) ICancellationTokenProvider cancellationTokenProvider)
@ -24,15 +23,17 @@ namespace Volo.Abp.Cli.NuGet
CancellationTokenProvider = cancellationTokenProvider; 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()) using (var client = new HttpClient())
{ {
client.Timeout = TimeSpan.FromSeconds(30); client.Timeout = TimeSpan.FromSeconds(30);
var responseMessage = await client.GetAsync( var responseMessage = await client.GetAsync(
$"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json", $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json",
CancellationTokenProvider.Token); CancellationTokenProvider.Token
);
if (!responseMessage.IsSuccessStatusCode) if (!responseMessage.IsSuccessStatusCode)
{ {
throw new Exception("Remote server returns error! HTTP status code: " + responseMessage.StatusCode); 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 result = await responseMessage.Content.ReadAsStringAsync();
var versions = JsonSerializer.Deserialize<NuGetVersionResultDto>(result).Versions; var versions = JsonSerializer.Deserialize<NuGetVersionResultDto>(result).Versions;
if (!includePreviews) if (!includePreviews)
{ {
versions = versions versions = versions

Loading…
Cancel
Save