33
44using Aspire . Cli . Interaction ;
55using Aspire . Cli . NuGet ;
6+ using Aspire . Shared ;
67using Microsoft . Extensions . Logging ;
78using Semver ;
89
@@ -31,7 +32,7 @@ public async Task NotifyIfUpdateAvailableAsync(DirectoryInfo workingDirectory, C
3132 }
3233
3334 var availablePackages = await nuGetPackageCache . GetCliPackagesAsync ( workingDirectory , prerelease : true , source : null , cancellationToken ) ;
34- var newerVersion = GetNewerVersion ( currentVersion , availablePackages ) ;
35+ var newerVersion = PackageUpdateHelpers . GetNewerVersion ( currentVersion , availablePackages ) ;
3536
3637 if ( newerVersion is not null )
3738 {
@@ -46,63 +47,6 @@ public async Task NotifyIfUpdateAvailableAsync(DirectoryInfo workingDirectory, C
4647
4748 protected virtual SemVersion ? GetCurrentVersion ( )
4849 {
49- try
50- {
51- var versionString = VersionHelper . GetDefaultTemplateVersion ( ) ;
52- // Remove any build metadata (e.g., +sha.12345) for comparison
53- var cleanVersionString = versionString . Split ( '+' ) [ 0 ] ;
54- return SemVersion . Parse ( cleanVersionString , SemVersionStyles . Strict ) ;
55- }
56- catch
57- {
58- return null ;
59- }
50+ return PackageUpdateHelpers . GetCurrentPackageVersion ( ) ;
6051 }
61-
62- private static SemVersion ? GetNewerVersion ( SemVersion currentVersion , IEnumerable < NuGetPackage > availablePackages )
63- {
64- SemVersion ? newestStable = null ;
65- SemVersion ? newestPrerelease = null ;
66-
67- foreach ( var package in availablePackages )
68- {
69- if ( SemVersion . TryParse ( package . Version , SemVersionStyles . Strict , out var version ) )
70- {
71- if ( version . IsPrerelease )
72- {
73- newestPrerelease = newestPrerelease is null || SemVersion . PrecedenceComparer . Compare ( version , newestPrerelease ) > 0 ? version : newestPrerelease ;
74- }
75- else
76- {
77- newestStable = newestStable is null || SemVersion . PrecedenceComparer . Compare ( version , newestStable ) > 0 ? version : newestStable ;
78- }
79- }
80- }
81-
82- // Apply notification rules
83- if ( currentVersion . IsPrerelease )
84- {
85- // Rule 1: If using a prerelease version where the version is lower than the latest stable version, prompt to upgrade
86- if ( newestStable is not null && SemVersion . PrecedenceComparer . Compare ( currentVersion , newestStable ) < 0 )
87- {
88- return newestStable ;
89- }
90-
91- // Rule 2: If using a prerelease version and there is a newer prerelease version, prompt to upgrade
92- if ( newestPrerelease is not null && SemVersion . PrecedenceComparer . Compare ( currentVersion , newestPrerelease ) < 0 )
93- {
94- return newestPrerelease ;
95- }
96- }
97- else
98- {
99- // Rule 3: If using a stable version and there is a newer stable version, prompt to upgrade
100- if ( newestStable is not null && SemVersion . PrecedenceComparer . Compare ( currentVersion , newestStable ) < 0 )
101- {
102- return newestStable ;
103- }
104- }
105-
106- return null ;
107- }
108- }
52+ }
0 commit comments