Skip to content

Commit 2755bee

Browse files
authored
Merge pull request #21548 from abpframework/issue-21546
CLI: Update command should also update LeptonX Theme package versions
2 parents e67a004 + 3968c79 commit 2755bee

File tree

3 files changed

+86
-20
lines changed

3 files changed

+86
-20
lines changed

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

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using NuGet.Versioning;
34
using System.IO;
45
using System.Linq;
@@ -39,6 +40,7 @@ public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews
3940
var latestVersionInfo = await _packageVersionCheckerService.GetLatestVersionOrNullAsync("Volo.Abp.Core", includeReleaseCandidates: includeReleaseCandidates);
4041
var latestReleaseCandidateVersionInfo = await _packageVersionCheckerService.GetLatestVersionOrNullAsync("Volo.Abp.Core", includeReleaseCandidates: true);
4142
var latestVersionFromMyGet = await GetLatestVersionFromMyGet("Volo.Abp.Core");
43+
var latestStableVersions = await _packageVersionCheckerService.GetLatestStableVersionsAsync();
4244

4345
async Task UpdateAsync(string filePath)
4446
{
@@ -55,7 +57,8 @@ async Task UpdateAsync(string filePath)
5557
latestVersionInfo.Version,
5658
latestReleaseCandidateVersionInfo.Version,
5759
latestVersionFromMyGet,
58-
version);
60+
version,
61+
latestStableVersions: latestStableVersions);
5962

6063
fs.Seek(0, SeekOrigin.Begin);
6164
fs.SetLength(0);
@@ -83,6 +86,7 @@ public async Task UpdateProjectAsync(string projectPath, bool includeNightlyPrev
8386
var latestVersionInfo = await _packageVersionCheckerService.GetLatestVersionOrNullAsync("Volo.Abp.Core");
8487
var latestReleaseCandidateVersionInfo = await _packageVersionCheckerService.GetLatestVersionOrNullAsync("Volo.Abp.Core", includeReleaseCandidates: true);
8588
var latestVersionFromMyGet = await GetLatestVersionFromMyGet("Volo.Abp.Core");
89+
var latestStableVersions = await _packageVersionCheckerService.GetLatestStableVersionsAsync();
8690

8791
using (var fs = File.Open(projectPath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
8892
{
@@ -97,7 +101,8 @@ public async Task UpdateProjectAsync(string projectPath, bool includeNightlyPrev
97101
latestVersionInfo.Version,
98102
latestReleaseCandidateVersionInfo.Version,
99103
latestVersionFromMyGet,
100-
version);
104+
version,
105+
latestStableVersions: latestStableVersions);
101106

102107
fs.Seek(0, SeekOrigin.Begin);
103108
fs.SetLength(0);
@@ -114,13 +119,20 @@ public async Task UpdateProjectAsync(string projectPath, bool includeNightlyPrev
114119

115120
protected virtual async Task UpdateInternalAsync(string projectPath, bool includeNightlyPreviews = false, bool includeReleaseCandidates = false, bool switchToStable = false)
116121
{
122+
var latestStableVersions = await _packageVersionCheckerService.GetLatestStableVersionsAsync();
123+
117124
using (var fs = File.Open(projectPath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
118125
{
119126
using (var sr = new StreamReader(fs, Encoding.Default, true))
120127
{
121128
var fileContent = await sr.ReadToEndAsync();
122129

123-
var updatedContent = await UpdateVoloPackagesAsync(fileContent, includeNightlyPreviews, includeReleaseCandidates, switchToStable);
130+
var updatedContent = await UpdateVoloPackagesAsync(
131+
fileContent,
132+
includeNightlyPreviews,
133+
includeReleaseCandidates,
134+
switchToStable,
135+
latestStableVersions: latestStableVersions);
124136

125137
fs.Seek(0, SeekOrigin.Begin);
126138
fs.SetLength(0);
@@ -153,7 +165,8 @@ private async Task<string> UpdateVoloPackagesAsync(string content,
153165
SemanticVersion latestNugetVersion = null,
154166
SemanticVersion latestNugetReleaseCandidateVersion = null,
155167
string latestMyGetVersion = null,
156-
string specifiedVersion = null)
168+
string specifiedVersion = null,
169+
List<PackageVersionCheckerService.LatestStableVersionResult> latestStableVersions = null)
157170
{
158171
string packageId = null;
159172

@@ -206,29 +219,39 @@ private async Task<string> UpdateVoloPackagesAsync(string content,
206219

207220
if (!specifiedVersion.IsNullOrWhiteSpace())
208221
{
209-
if (isLeptonXPackage || isStudioPackage)
222+
var leptonXPackageVersion = latestStableVersions?
223+
.FirstOrDefault(v => v.Version.Equals(specifiedVersion, StringComparison.InvariantCultureIgnoreCase))?.LeptonX?.Version;
224+
225+
if ((isLeptonXPackage && string.IsNullOrWhiteSpace(leptonXPackageVersion)) || isStudioPackage)
210226
{
211227
Logger.LogWarning("Package: {PackageId} could not be updated. Please manually update the package version yourself to prevent version mismatches!", packageId);
212228
continue;
213229
}
214230

215-
if (await SpecifiedVersionExists(specifiedVersion, packageId))
231+
var isLeptonXPackageWithVersion = isLeptonXPackage && !string.IsNullOrWhiteSpace(leptonXPackageVersion);
232+
233+
if (isLeptonXPackageWithVersion || await SpecifiedVersionExists(specifiedVersion, packageId))
234+
{
235+
TryUpdatingPackage(isLeptonXPackageWithVersion ? leptonXPackageVersion : specifiedVersion);
236+
}
237+
else
216238
{
217-
var specifiedSemanticVersion = SemanticVersion.Parse(specifiedVersion);
239+
Logger.LogWarning("Package \"{PackageId}\" specified version v{SpecifiedVersion} does not exist!", packageId, specifiedVersion);
240+
}
241+
242+
void TryUpdatingPackage(string versionToUpdate)
243+
{
244+
var specifiedSemanticVersion = SemanticVersion.Parse(versionToUpdate);
218245
if (specifiedSemanticVersion > currentSemanticVersion)
219246
{
220-
Logger.LogInformation("Updating package \"{PackageId}\" from v{CurrentVersion} to v{SpecifiedVersion}", packageId, currentVersion, specifiedVersion);
221-
versionAttribute.Value = specifiedVersion;
247+
Logger.LogInformation("Updating package \"{PackageId}\" from v{CurrentVersion} to v{SpecifiedVersion}", packageId, currentVersion, versionToUpdate);
248+
versionAttribute.Value = versionToUpdate;
222249
}
223250
else
224251
{
225-
Logger.LogWarning("Unable to update package \"{PackageId}\" version v{CurrentVersion} to v{SpecifiedVersion}", packageId, currentVersion, specifiedVersion);
252+
Logger.LogWarning("Unable to update package \"{PackageId}\" version v{CurrentVersion} to v{SpecifiedVersion}", packageId, currentVersion, versionToUpdate);
226253
}
227254
}
228-
else
229-
{
230-
Logger.LogWarning("Package \"{PackageId}\" specified version v{SpecifiedVersion} does not exist!", packageId, specifiedVersion);
231-
}
232255
}
233256
else
234257
{
@@ -252,7 +275,7 @@ private async Task<string> UpdateVoloPackagesAsync(string content,
252275
}
253276
else
254277
{
255-
latestVersion = latestMyGetVersion == null ? await GetLatestVersionFromMyGet(packageId) : latestMyGetVersion;
278+
latestVersion = latestMyGetVersion ?? await GetLatestVersionFromMyGet(packageId);
256279
}
257280

258281
if(latestVersion == null)

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

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Linq;
66
using System.Net;
77
using System.Threading.Tasks;
8+
using JetBrains.Annotations;
89
using Microsoft.Extensions.Logging;
910
using Microsoft.Extensions.Logging.Abstractions;
1011
using Volo.Abp.Cli.Http;
@@ -111,6 +112,11 @@ public async Task<LatestVersionInfo> GetLatestStableVersionFromGithubAsync()
111112
? new LatestVersionInfo(semanticVersion, latestStableVersionResult.Message)
112113
: null;
113114
}
115+
116+
public async Task<List<LatestStableVersionResult>> GetLatestStableVersionsAsync()
117+
{
118+
return await GetLatestStableVersionsInternalAsync();
119+
}
114120

115121
private static ConcurrentDictionary<string, bool> CommercialPackagesCache { get; } = new ();
116122

@@ -225,7 +231,7 @@ private async Task SetApiKeyResultAsync()
225231
_apiKeyResult ??= await _apiKeyService.GetApiKeyOrNullAsync();
226232
}
227233

228-
private async Task<LatestStableVersionResult> GetLatestStableVersionOrNullAsync()
234+
private async Task<List<LatestStableVersionResult>> GetLatestStableVersionsInternalAsync()
229235
{
230236
try
231237
{
@@ -241,16 +247,24 @@ private async Task<LatestStableVersionResult> GetLatestStableVersionOrNullAsync(
241247

242248
var content = await responseMessage.Content.ReadAsStringAsync();
243249
var result = JsonSerializer.Deserialize<List<LatestStableVersionResult>>(content);
244-
245-
return result.FirstOrDefault(x => x.Type.ToLowerInvariant() == "stable");
250+
return result.OrderBy(q => q.Type.ToLowerInvariant() == "stable").ThenBy(q => SemanticVersion.Parse(q.Version)).ToList();
246251
}
247252
}
248253
catch
249254
{
250-
return null;
255+
return [];
251256
}
252257
}
253258

259+
private async Task<LatestStableVersionResult> GetLatestStableVersionOrNullAsync()
260+
{
261+
var latestStableVersionsResult = await GetLatestStableVersionsInternalAsync();
262+
263+
return latestStableVersionsResult.Count <= 0
264+
? null
265+
: latestStableVersionsResult.FirstOrDefault();
266+
}
267+
254268
public class NuGetSearchResultDto
255269
{
256270
public int TotalHits { get; set; }
@@ -270,6 +284,11 @@ public class NuGetVersionResultDto
270284
public List<string> Versions { get; set; }
271285
}
272286

287+
public class LeptonXThemeInfo
288+
{
289+
public string Version { get; set; }
290+
}
291+
273292
public class LatestStableVersionResult
274293
{
275294
public string Version { get; set; }
@@ -279,5 +298,8 @@ public class LatestStableVersionResult
279298
public string Type { get; set; }
280299

281300
public string Message { get; set; }
301+
302+
[CanBeNull]
303+
public LeptonXThemeInfo LeptonX { get; set; }
282304
}
283305
}

latest-versions.json

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,29 @@
11
[
2+
{
3+
"version": "9.0.1",
4+
"releaseDate": "",
5+
"type": "stable",
6+
"message": "",
7+
"leptonx": {
8+
"version": "4.0.1"
9+
}
10+
},
11+
{
12+
"version": "9.0.0",
13+
"releaseDate": "",
14+
"type": "stable",
15+
"message": "",
16+
"leptonx": {
17+
"version": "4.0.0"
18+
}
19+
},
220
{
321
"version": "8.3.1",
422
"releaseDate": "",
523
"type": "stable",
6-
"message": ""
24+
"message": "",
25+
"leptonx": {
26+
"version": "3.3.1"
27+
}
728
}
829
]

0 commit comments

Comments
 (0)