1
1
using System ;
2
+ using System . Collections . Generic ;
2
3
using NuGet . Versioning ;
3
4
using System . IO ;
4
5
using System . Linq ;
@@ -39,6 +40,7 @@ public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews
39
40
var latestVersionInfo = await _packageVersionCheckerService . GetLatestVersionOrNullAsync ( "Volo.Abp.Core" , includeReleaseCandidates : includeReleaseCandidates ) ;
40
41
var latestReleaseCandidateVersionInfo = await _packageVersionCheckerService . GetLatestVersionOrNullAsync ( "Volo.Abp.Core" , includeReleaseCandidates : true ) ;
41
42
var latestVersionFromMyGet = await GetLatestVersionFromMyGet ( "Volo.Abp.Core" ) ;
43
+ var latestStableVersions = await _packageVersionCheckerService . GetLatestStableVersionsAsync ( ) ;
42
44
43
45
async Task UpdateAsync ( string filePath )
44
46
{
@@ -55,7 +57,8 @@ async Task UpdateAsync(string filePath)
55
57
latestVersionInfo . Version ,
56
58
latestReleaseCandidateVersionInfo . Version ,
57
59
latestVersionFromMyGet ,
58
- version ) ;
60
+ version ,
61
+ latestStableVersions : latestStableVersions ) ;
59
62
60
63
fs . Seek ( 0 , SeekOrigin . Begin ) ;
61
64
fs . SetLength ( 0 ) ;
@@ -83,6 +86,7 @@ public async Task UpdateProjectAsync(string projectPath, bool includeNightlyPrev
83
86
var latestVersionInfo = await _packageVersionCheckerService . GetLatestVersionOrNullAsync ( "Volo.Abp.Core" ) ;
84
87
var latestReleaseCandidateVersionInfo = await _packageVersionCheckerService . GetLatestVersionOrNullAsync ( "Volo.Abp.Core" , includeReleaseCandidates : true ) ;
85
88
var latestVersionFromMyGet = await GetLatestVersionFromMyGet ( "Volo.Abp.Core" ) ;
89
+ var latestStableVersions = await _packageVersionCheckerService . GetLatestStableVersionsAsync ( ) ;
86
90
87
91
using ( var fs = File . Open ( projectPath , FileMode . Open , FileAccess . ReadWrite , FileShare . None ) )
88
92
{
@@ -97,7 +101,8 @@ public async Task UpdateProjectAsync(string projectPath, bool includeNightlyPrev
97
101
latestVersionInfo . Version ,
98
102
latestReleaseCandidateVersionInfo . Version ,
99
103
latestVersionFromMyGet ,
100
- version ) ;
104
+ version ,
105
+ latestStableVersions : latestStableVersions ) ;
101
106
102
107
fs . Seek ( 0 , SeekOrigin . Begin ) ;
103
108
fs . SetLength ( 0 ) ;
@@ -114,13 +119,20 @@ public async Task UpdateProjectAsync(string projectPath, bool includeNightlyPrev
114
119
115
120
protected virtual async Task UpdateInternalAsync ( string projectPath , bool includeNightlyPreviews = false , bool includeReleaseCandidates = false , bool switchToStable = false )
116
121
{
122
+ var latestStableVersions = await _packageVersionCheckerService . GetLatestStableVersionsAsync ( ) ;
123
+
117
124
using ( var fs = File . Open ( projectPath , FileMode . Open , FileAccess . ReadWrite , FileShare . None ) )
118
125
{
119
126
using ( var sr = new StreamReader ( fs , Encoding . Default , true ) )
120
127
{
121
128
var fileContent = await sr . ReadToEndAsync ( ) ;
122
129
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 ) ;
124
136
125
137
fs . Seek ( 0 , SeekOrigin . Begin ) ;
126
138
fs . SetLength ( 0 ) ;
@@ -153,7 +165,8 @@ private async Task<string> UpdateVoloPackagesAsync(string content,
153
165
SemanticVersion latestNugetVersion = null ,
154
166
SemanticVersion latestNugetReleaseCandidateVersion = null ,
155
167
string latestMyGetVersion = null ,
156
- string specifiedVersion = null )
168
+ string specifiedVersion = null ,
169
+ List < PackageVersionCheckerService . LatestStableVersionResult > latestStableVersions = null )
157
170
{
158
171
string packageId = null ;
159
172
@@ -206,29 +219,39 @@ private async Task<string> UpdateVoloPackagesAsync(string content,
206
219
207
220
if ( ! specifiedVersion . IsNullOrWhiteSpace ( ) )
208
221
{
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 )
210
226
{
211
227
Logger . LogWarning ( "Package: {PackageId} could not be updated. Please manually update the package version yourself to prevent version mismatches!" , packageId ) ;
212
228
continue ;
213
229
}
214
230
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
216
238
{
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 ) ;
218
245
if ( specifiedSemanticVersion > currentSemanticVersion )
219
246
{
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 ;
222
249
}
223
250
else
224
251
{
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 ) ;
226
253
}
227
254
}
228
- else
229
- {
230
- Logger . LogWarning ( "Package \" {PackageId}\" specified version v{SpecifiedVersion} does not exist!" , packageId , specifiedVersion ) ;
231
- }
232
255
}
233
256
else
234
257
{
@@ -252,7 +275,7 @@ private async Task<string> UpdateVoloPackagesAsync(string content,
252
275
}
253
276
else
254
277
{
255
- latestVersion = latestMyGetVersion == null ? await GetLatestVersionFromMyGet ( packageId ) : latestMyGetVersion ;
278
+ latestVersion = latestMyGetVersion ?? await GetLatestVersionFromMyGet ( packageId ) ;
256
279
}
257
280
258
281
if ( latestVersion == null )
0 commit comments