Browse Source

CLI: Update command should also update LeptonX Theme package versions

pull/21548/head
EngincanV 1 year ago
parent
commit
24e22c2597
  1. 31
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs
  2. 30
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs

31
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using NuGet.Versioning;
using System.IO;
using System.Linq;
@ -39,6 +40,7 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency
var latestVersionInfo = await _packageVersionCheckerService.GetLatestVersionOrNullAsync("Volo.Abp.Core", includeReleaseCandidates: includeReleaseCandidates);
var latestReleaseCandidateVersionInfo = await _packageVersionCheckerService.GetLatestVersionOrNullAsync("Volo.Abp.Core", includeReleaseCandidates: true);
var latestVersionFromMyGet = await GetLatestVersionFromMyGet("Volo.Abp.Core");
var latestStableVersions = await _packageVersionCheckerService.GetLatestStableVersionsAsync();
async Task UpdateAsync(string filePath)
{
@ -55,7 +57,8 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency
latestVersionInfo.Version,
latestReleaseCandidateVersionInfo.Version,
latestVersionFromMyGet,
version);
version,
latestStableVersions: latestStableVersions);
fs.Seek(0, SeekOrigin.Begin);
fs.SetLength(0);
@ -83,6 +86,7 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency
var latestVersionInfo = await _packageVersionCheckerService.GetLatestVersionOrNullAsync("Volo.Abp.Core");
var latestReleaseCandidateVersionInfo = await _packageVersionCheckerService.GetLatestVersionOrNullAsync("Volo.Abp.Core", includeReleaseCandidates: true);
var latestVersionFromMyGet = await GetLatestVersionFromMyGet("Volo.Abp.Core");
var latestStableVersions = await _packageVersionCheckerService.GetLatestStableVersionsAsync();
using (var fs = File.Open(projectPath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
@ -97,7 +101,8 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency
latestVersionInfo.Version,
latestReleaseCandidateVersionInfo.Version,
latestVersionFromMyGet,
version);
version,
latestStableVersions: latestStableVersions);
fs.Seek(0, SeekOrigin.Begin);
fs.SetLength(0);
@ -114,13 +119,20 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency
protected virtual async Task UpdateInternalAsync(string projectPath, bool includeNightlyPreviews = false, bool includeReleaseCandidates = false, bool switchToStable = false)
{
var latestStableVersions = await _packageVersionCheckerService.GetLatestStableVersionsAsync();
using (var fs = File.Open(projectPath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
using (var sr = new StreamReader(fs, Encoding.Default, true))
{
var fileContent = await sr.ReadToEndAsync();
var updatedContent = await UpdateVoloPackagesAsync(fileContent, includeNightlyPreviews, includeReleaseCandidates, switchToStable);
var updatedContent = await UpdateVoloPackagesAsync(
fileContent,
includeNightlyPreviews,
includeReleaseCandidates,
switchToStable,
latestStableVersions: latestStableVersions);
fs.Seek(0, SeekOrigin.Begin);
fs.SetLength(0);
@ -153,7 +165,8 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency
SemanticVersion latestNugetVersion = null,
SemanticVersion latestNugetReleaseCandidateVersion = null,
string latestMyGetVersion = null,
string specifiedVersion = null)
string specifiedVersion = null,
List<PackageVersionCheckerService.LatestStableVersionResult> latestStableVersions = null)
{
string packageId = null;
@ -206,12 +219,20 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency
if (!specifiedVersion.IsNullOrWhiteSpace())
{
if (isLeptonXPackage || isStudioPackage)
var leptonXPackageVersion = latestStableVersions?
.FirstOrDefault(v => v.Version.Equals(specifiedVersion, StringComparison.InvariantCultureIgnoreCase))?.LeptonX?.Version;
if ((isLeptonXPackage && string.IsNullOrWhiteSpace(leptonXPackageVersion)) || isStudioPackage)
{
Logger.LogWarning("Package: {PackageId} could not be updated. Please manually update the package version yourself to prevent version mismatches!", packageId);
continue;
}
if (isLeptonXPackage && !string.IsNullOrWhiteSpace(leptonXPackageVersion))
{
specifiedVersion = leptonXPackageVersion;
}
if (await SpecifiedVersionExists(specifiedVersion, packageId))
{
var specifiedSemanticVersion = SemanticVersion.Parse(specifiedVersion);

30
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Version/PackageVersionCheckerService.cs

@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Volo.Abp.Cli.Http;
@ -111,6 +112,11 @@ public class PackageVersionCheckerService : ITransientDependency
? new LatestVersionInfo(semanticVersion, latestStableVersionResult.Message)
: null;
}
public async Task<List<LatestStableVersionResult>> GetLatestStableVersionsAsync()
{
return await GetLatestStableVersionsInternalAsync();
}
private static ConcurrentDictionary<string, bool> CommercialPackagesCache { get; } = new ();
@ -225,7 +231,7 @@ public class PackageVersionCheckerService : ITransientDependency
_apiKeyResult ??= await _apiKeyService.GetApiKeyOrNullAsync();
}
private async Task<LatestStableVersionResult> GetLatestStableVersionOrNullAsync()
private async Task<List<LatestStableVersionResult>> GetLatestStableVersionsInternalAsync()
{
try
{
@ -241,16 +247,24 @@ public class PackageVersionCheckerService : ITransientDependency
var content = await responseMessage.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<List<LatestStableVersionResult>>(content);
return result.FirstOrDefault(x => x.Type.ToLowerInvariant() == "stable");
return result.OrderBy(q => q.Type.ToLowerInvariant() == "stable").ThenBy(q => SemanticVersion.Parse(q.Version)).ToList();
}
}
catch
{
return null;
return [];
}
}
private async Task<LatestStableVersionResult> GetLatestStableVersionOrNullAsync()
{
var latestStableVersionsResult = await GetLatestStableVersionsInternalAsync();
return latestStableVersionsResult.Count <= 0
? null
: latestStableVersionsResult.FirstOrDefault();
}
public class NuGetSearchResultDto
{
public int TotalHits { get; set; }
@ -270,6 +284,11 @@ public class PackageVersionCheckerService : ITransientDependency
public List<string> Versions { get; set; }
}
public class LeptonXThemeInfo
{
public string Version { get; set; }
}
public class LatestStableVersionResult
{
public string Version { get; set; }
@ -279,5 +298,8 @@ public class PackageVersionCheckerService : ITransientDependency
public string Type { get; set; }
public string Message { get; set; }
[CanBeNull]
public LeptonXThemeInfo LeptonX { get; set; }
}
}

Loading…
Cancel
Save