diff --git a/Sitefinity CLI/PackageManagement/Implementations/NuGetApiClient.cs b/Sitefinity CLI/PackageManagement/Implementations/NuGetApiClient.cs index a2c16c2..c704fe4 100644 --- a/Sitefinity CLI/PackageManagement/Implementations/NuGetApiClient.cs +++ b/Sitefinity CLI/PackageManagement/Implementations/NuGetApiClient.cs @@ -89,7 +89,7 @@ private async Task GetPackageXmlDocument(string id, str PackageSpecificationResponseModel specification = await this.GetPackageSpecification(id, version, sources); - if (specification.SpecResponse == null || specification.SpecResponse.StatusCode != HttpStatusCode.OK) + if (specification?.SpecResponse == null || specification.SpecResponse.StatusCode != HttpStatusCode.OK) { return null; } @@ -135,7 +135,6 @@ private async Task GetPackageSpecification(st if (packageSepc.SpecResponse == null) { this.logger.LogError("Unable to retrieve package with name: {Id} and version: {Version} from any of the provided sources: {Sources}", id, version, nugetPackageSources.Select(s => s.Source)); - throw new UpgradeException("Upgrade failed!"); } return packageSepc; diff --git a/Sitefinity CLI/PackageManagement/Implementations/UpgradeConfigGenerator.cs b/Sitefinity CLI/PackageManagement/Implementations/UpgradeConfigGenerator.cs index 9a4044b..b41bb9d 100644 --- a/Sitefinity CLI/PackageManagement/Implementations/UpgradeConfigGenerator.cs +++ b/Sitefinity CLI/PackageManagement/Implementations/UpgradeConfigGenerator.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Logging; using NuGet.Configuration; +using Sitefinity_CLI.Exceptions; using Sitefinity_CLI.Model; using Sitefinity_CLI.PackageManagement.Contracts; using Sitefinity_CLI.Services.Contracts; @@ -81,6 +82,10 @@ private async Task GenerateProjectUpgradeConfigSection( this.logger.LogInformation($"Collecting Sitefinity NuGet package tree for '{projectFilePath}'..."); NuGetPackage currentSitefinityVersionPackageTree = await this.sitefinityPackageManager.GetSitefinityPackageTree(currentSitefinityVersion.ToString(), packageSources); + if (currentSitefinityVersionPackageTree == null) + { + throw new UpgradeException("Unable to obtain current Sitefinity dependency tree"); + } this.processedPackagesPerProjectCache[projectFilePath] = new HashSet(); if (!this.TryAddPackageTreeToProjectUpgradeConfigSection(powerShellXmlConfig, projectNode, projectFilePath, currentSitefinityVersionPackageTree, newSitefinityVersionPackageTree)) diff --git a/Sitefinity CLI/Services/SitefinityNugetPackageService.cs b/Sitefinity CLI/Services/SitefinityNugetPackageService.cs index 734fc16..b6621d1 100644 --- a/Sitefinity CLI/Services/SitefinityNugetPackageService.cs +++ b/Sitefinity CLI/Services/SitefinityNugetPackageService.cs @@ -10,6 +10,7 @@ using Sitefinity_CLI.PackageManagement.Implementations; using Sitefinity_CLI.Services.Contracts; using NuGet.Configuration; +using Sitefinity_CLI.Exceptions; namespace Sitefinity_CLI.Services { @@ -21,12 +22,16 @@ public SitefinityNugetPackageService(ISitefinityPackageManager sitefinityPackage this.dotnetCliClient = dotnetCliClient; this.httpClient = httpClientFactory.CreateClient(); } - + public async Task PrepareSitefinityUpgradePackage(UpgradeOptions options, IEnumerable sitefinityProjectFilePaths) { IEnumerable packageSources = this.sitefinityPackageManager.GetNugetPackageSources(options.NugetConfigPath); NuGetPackage newSitefinityPackage = await this.sitefinityPackageManager.GetSitefinityPackageTree(options.VersionAsString, packageSources); + if (newSitefinityPackage == null) + { + throw new UpgradeException($"Unable to prepare upgrade package for version: {options.Version}"); + } this.sitefinityPackageManager.Restore(options.SolutionPath); this.sitefinityPackageManager.SetTargetFramework(sitefinityProjectFilePaths, options.VersionAsString); @@ -84,7 +89,7 @@ public async Task GetLatestSitefinityVersion() private async Task GetLatestCompatibleVersion(string packageId, Version sitefinityVersion, IEnumerable packageSources) { - IEnumerable versions = this.dotnetCliClient.GetPackageVersionsInNugetSources(packageId, null); + IEnumerable versions = this.dotnetCliClient.GetPackageVersionsInNugetSources(packageId, null); NuGetPackage compatiblePackage = null; @@ -93,7 +98,11 @@ private async Task GetLatestCompatibleVersion(string packageId, Ve bool isIncompatible = false; NuGetPackage package = await this.sitefinityPackageManager.GetPackageTree(packageId, version, packageSources, package => { - isIncompatible = this.IsSitefinityPackage(package.Id) && new Version(package.Version) > sitefinityVersion; + if (package != null) + { + isIncompatible = this.IsSitefinityPackage(package.Id) && new Version(package.Version) > sitefinityVersion; + } + return isIncompatible; }); diff --git a/Sitefinity CLI/Sitefinity CLI.csproj b/Sitefinity CLI/Sitefinity CLI.csproj index 4bafc41..faceae5 100644 --- a/Sitefinity CLI/Sitefinity CLI.csproj +++ b/Sitefinity CLI/Sitefinity CLI.csproj @@ -5,9 +5,9 @@ net8.0 sf Sitefinity_CLI - 1.1.0.53 + 1.1.0.54 1.1.0 - 1.1.0.53 + 1.1.0.54 false false win-x64