Skip to content

Commit 88fc6b4

Browse files
committed
Generate correct error message when trying to install a workload which isn't supported for the current platform
1 parent 9f15943 commit 88fc6b4

File tree

4 files changed

+12
-11
lines changed

4 files changed

+12
-11
lines changed

src/Cli/dotnet/commands/dotnet-workload/install/WorkloadInstallCommand.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,16 +104,16 @@ private void ValidateWorkloadIdsInput()
104104
var availableWorkloads = _workloadResolver.GetAvailableWorkloads();
105105
foreach (var workloadId in _workloadIds)
106106
{
107-
if (availableWorkloads.Select(workload => workload.Id.ToString()).Contains(workloadId))
107+
if (!availableWorkloads.Select(workload => workload.Id.ToString()).Contains(workloadId))
108108
{
109-
if (!_workloadResolver.IsWorkloadPlatformCompatible(new WorkloadId(workloadId)))
109+
if (_workloadResolver.IsPlatformIncompatibleWorkload(new WorkloadId(workloadId)))
110110
{
111111
throw new GracefulException(string.Format(LocalizableStrings.WorkloadNotSupportedOnPlatform, workloadId));
112112
}
113-
}
114-
else
115-
{
116-
throw new GracefulException(string.Format(LocalizableStrings.WorkloadNotRecognized, workloadId));
113+
else
114+
{
115+
throw new GracefulException(string.Format(LocalizableStrings.WorkloadNotRecognized, workloadId));
116+
}
117117
}
118118
}
119119
}

src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/IWorkloadResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public interface IWorkloadResolver
1111
IEnumerable<WorkloadPackId> GetPacksInWorkload(WorkloadId workloadId);
1212
ISet<WorkloadResolver.WorkloadInfo>? GetWorkloadSuggestionForMissingPacks(IList<WorkloadPackId> packId, out ISet<WorkloadPackId> unsatisfiablePacks);
1313
IEnumerable<WorkloadResolver.WorkloadInfo> GetAvailableWorkloads();
14-
bool IsWorkloadPlatformCompatible(WorkloadId workloadId);
14+
bool IsPlatformIncompatibleWorkload(WorkloadId workloadId);
1515
string GetManifestVersion(string manifestId);
1616
IEnumerable<WorkloadResolver.ManifestInfo> GetInstalledManifests();
1717

src/Resolvers/Microsoft.NET.Sdk.WorkloadManifestReader/WorkloadResolver.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -621,13 +621,14 @@ public WorkloadInfo GetWorkloadInfo(WorkloadId workloadId)
621621
return new WorkloadInfo(workload.Id, workload.Description);
622622
}
623623

624-
public bool IsWorkloadPlatformCompatible(WorkloadId workloadId)
624+
public bool IsPlatformIncompatibleWorkload(WorkloadId workloadId)
625625
{
626626
if (_workloads.TryGetValue(workloadId) is not (WorkloadDefinition workload, WorkloadManifest manifest))
627627
{
628-
throw new ArgumentException($"Workload '{workloadId}' not found", nameof(workloadId));
628+
// Not a recognized workload
629+
return false;
629630
}
630-
return IsWorkloadPlatformCompatible(workload, manifest);
631+
return !IsWorkloadPlatformCompatible(workload, manifest);
631632
}
632633

633634
private bool IsWorkloadPlatformCompatible(WorkloadDefinition workload, WorkloadManifest manifest)

src/Tests/dotnet-workload-search.Tests/MockWorkloadResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public MockWorkloadResolver(IEnumerable<WorkloadResolver.WorkloadInfo> available
2323
public ISet<WorkloadResolver.WorkloadInfo> GetWorkloadSuggestionForMissingPacks(IList<WorkloadPackId> packId, out ISet<WorkloadPackId> unsatisfiablePacks) => throw new NotImplementedException();
2424
public void RefreshWorkloadManifests() => throw new NotImplementedException();
2525
public WorkloadResolver.PackInfo TryGetPackInfo(WorkloadPackId packId) => throw new NotImplementedException();
26-
public bool IsWorkloadPlatformCompatible(WorkloadId workloadId) => throw new NotImplementedException();
26+
public bool IsPlatformIncompatibleWorkload(WorkloadId workloadId) => throw new NotImplementedException();
2727
public string GetManifestVersion(string manifestId) => throw new NotImplementedException();
2828
public IEnumerable<WorkloadResolver.ManifestInfo> GetInstalledManifests() => throw new NotImplementedException();
2929
public IWorkloadResolver CreateOverlayResolver(IWorkloadManifestProvider overlayManifestProvider) => throw new NotImplementedException();

0 commit comments

Comments
 (0)