diff --git a/src/AspireRunner.AspNetCore/AspireRunner.AspNetCore.csproj b/src/AspireRunner.AspNetCore/AspireRunner.AspNetCore.csproj index 632d737..0b57a43 100644 --- a/src/AspireRunner.AspNetCore/AspireRunner.AspNetCore.csproj +++ b/src/AspireRunner.AspNetCore/AspireRunner.AspNetCore.csproj @@ -1,7 +1,7 @@  - 1.1.4 + 1.1.5 net6.0;net7.0;net8.0 latest diff --git a/src/AspireRunner.Core/AspireDashboardManager.cs b/src/AspireRunner.Core/AspireDashboardManager.cs index 1c0f75e..6a2c9a9 100644 --- a/src/AspireRunner.Core/AspireDashboardManager.cs +++ b/src/AspireRunner.Core/AspireDashboardManager.cs @@ -34,7 +34,7 @@ public async Task InitializeAsync() return false; } - _nugetPackageName = $"{AspireDashboard.SdkName}.{PlatformHelper.Rid}"; + _nugetPackageName = $"{AspireDashboard.SdkName}.{PlatformHelper.Rid()}"; _runnerFolder = Path.Combine(_dotnetCli.DataPath, AspireDashboard.DataFolder); if (!Directory.Exists(_runnerFolder)) { @@ -169,15 +169,17 @@ public async Task TryUpdateAsync(Version[] installedRuntimes, Version? preferred ? installedRuntimes.Where(v => v.IsCompatibleWith(preferredVersion)).Max() : installedRuntimes.Max(); - var latestAvailableVersion = preferredVersion != null - ? availableVersions.Where(preferredVersion.IsCompatibleWith).Max() - : availableVersions.Where(v => v.Major == latestRuntimeVersion!.Major).Max(); - + var latestAvailableVersion = availableVersions + .Where(preferredVersion != null ? preferredVersion.IsCompatibleWith : v => v.Major == latestRuntimeVersion!.Major) + .DefaultIfEmpty() + .Max() + ?? availableVersions.First(); // Fallback to the latest version + if (latestAvailableVersion > latestInstalledVersion) { _logger.LogWarning("A newer version of the Aspire Dashboard is available, downloading version {Version}", latestAvailableVersion); - var newVersionFolder = Path.Combine(_runnerFolder, AspireDashboard.DownloadFolder, latestAvailableVersion!.ToString()); + var newVersionFolder = Path.Combine(_runnerFolder, AspireDashboard.DownloadFolder, latestAvailableVersion.ToString()); var downloadSuccessful = await _nugetHelper.DownloadPackageAsync(_nugetPackageName, latestAvailableVersion, newVersionFolder); if (downloadSuccessful) { @@ -243,16 +245,20 @@ public async Task TryUpdateAsync(Version[] installedRuntimes, Version? preferred private async Task FetchLatestVersionAsync(Version[] installedRuntimes, Version? preferredVersion) { var availableVersions = await _nugetHelper.GetPackageVersionsAsync(_nugetPackageName); + if (availableVersions.Length == 0) + { + throw new ApplicationException("No versions of the Aspire Dashboard are available"); + } var latestRuntimeVersion = preferredVersion != null ? installedRuntimes.Where(v => v.IsCompatibleWith(preferredVersion)).Max() : installedRuntimes.Max(); - var versionToDownload = ( - preferredVersion != null - ? availableVersions.Where(preferredVersion.IsCompatibleWith).Max() - : availableVersions.Where(v => v.Major == latestRuntimeVersion!.Major).Max() - ) ?? availableVersions.First(); // Fallback to the latest version + var versionToDownload = availableVersions + .Where(preferredVersion != null ? preferredVersion.IsCompatibleWith : v => v.Major == latestRuntimeVersion!.Major) + .DefaultIfEmpty() + .Max() + ?? availableVersions.First(); // Fallback to the latest version return versionToDownload; } diff --git a/src/AspireRunner.Core/AspireRunner.Core.csproj b/src/AspireRunner.Core/AspireRunner.Core.csproj index fa3d35c..50046d9 100644 --- a/src/AspireRunner.Core/AspireRunner.Core.csproj +++ b/src/AspireRunner.Core/AspireRunner.Core.csproj @@ -1,7 +1,7 @@  - 1.1.4 + 1.1.5 net6.0;net7.0;net8.0 win;osx;linux latest diff --git a/src/AspireRunner.Core/Helpers/PlatformHelper.cs b/src/AspireRunner.Core/Helpers/PlatformHelper.cs index e5a2655..a5bcd6e 100644 --- a/src/AspireRunner.Core/Helpers/PlatformHelper.cs +++ b/src/AspireRunner.Core/Helpers/PlatformHelper.cs @@ -69,7 +69,7 @@ public static bool IsWsl() if (OsIdentifier() is not "linux") { - return false; + return (_isWsl = false).Value; } var command = Cli.Wrap("uname") diff --git a/src/AspireRunner.Tool/AspireRunner.Tool.csproj b/src/AspireRunner.Tool/AspireRunner.Tool.csproj index 5287e11..bcdc6e1 100644 --- a/src/AspireRunner.Tool/AspireRunner.Tool.csproj +++ b/src/AspireRunner.Tool/AspireRunner.Tool.csproj @@ -1,7 +1,7 @@  - 1.1.4 + 1.1.5 Exe net6.0;net7.0;net8.0 win;osx;linux diff --git a/src/AspireRunner.Tool/Program.cs b/src/AspireRunner.Tool/Program.cs index a81ddad..0f46869 100644 --- a/src/AspireRunner.Tool/Program.cs +++ b/src/AspireRunner.Tool/Program.cs @@ -77,15 +77,23 @@ The Aspire Dashboard is not installed. return ReturnCodes.AspireInstallationError; } -var aspireDashboard = await aspireDashboardManager.GetDashboardAsync(dashboardOptions, new ConsoleLogger(arguments.Verbose)); -aspireDashboard.DashboardStarted += url => logger.LogInformation(Green("The Aspire Dashboard is ready at {Url}"), url); +try +{ + var aspireDashboard = await aspireDashboardManager.GetDashboardAsync(dashboardOptions, new ConsoleLogger(arguments.Verbose)); + aspireDashboard.DashboardStarted += url => logger.LogInformation(Green("The Aspire Dashboard is ready at {Url}"), url); -var stopHandler = (PosixSignalContext _) => aspireDashboard.Stop(); -using var sigInt = PosixSignalRegistration.Create(PosixSignal.SIGINT, stopHandler); -using var sigTerm = PosixSignalRegistration.Create(PosixSignal.SIGTERM, stopHandler); + var stopHandler = (PosixSignalContext _) => aspireDashboard.Stop(); + using var sigInt = PosixSignalRegistration.Create(PosixSignal.SIGINT, stopHandler); + using var sigTerm = PosixSignalRegistration.Create(PosixSignal.SIGTERM, stopHandler); -aspireDashboard.Start(); -await aspireDashboard.WaitForExitAsync(); + aspireDashboard.Start(); + await aspireDashboard.WaitForExitAsync(); -logger.LogDebug("Aspire Dashboard exited, Errors = {HasErrors}", aspireDashboard.HasErrors); -return aspireDashboard.HasErrors ? ReturnCodes.AspireDashboardError : ReturnCodes.Success; \ No newline at end of file + logger.LogDebug("Aspire Dashboard exited, Errors = {HasErrors}", aspireDashboard.HasErrors); + return aspireDashboard.HasErrors ? ReturnCodes.AspireDashboardError : ReturnCodes.Success; +} +catch (Exception e) +{ + logger.LogError("An error occurred while starting the Aspire Dashboard, {Error}", e.Message); + return ReturnCodes.AspireDashboardError; +} \ No newline at end of file