| File: Commands\Workload\WorkloadSearchVersionsCommandDefinition.cs | Web Access |
| Project: src\sdk\src\Cli\Microsoft.DotNet.Cli.Definitions\Microsoft.DotNet.Cli.Definitions.csproj (Microsoft.DotNet.Cli.Definitions) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.CommandLine; namespace Microsoft.DotNet.Cli.Commands.Workload.Search; internal sealed class WorkloadSearchVersionsCommandDefinition : WorkloadCommandDefinitionBase { public readonly Argument<IEnumerable<string>> WorkloadVersionArgument = new(CommandDefinitionStrings.WorkloadVersionArgument) { Arity = ArgumentArity.ZeroOrMore, Description = CommandDefinitionStrings.WorkloadVersionArgumentDescription }; public readonly Option<int> TakeOption = new("--take") { DefaultValueFactory = (_) => 5 }; public readonly Option<string> FormatOption = new("--format") { Description = CommandDefinitionStrings.FormatOptionDescription }; public readonly Option<bool> IncludePreviewsOption = new("--include-previews"); public WorkloadSearchVersionsCommandDefinition() : base("version", CommandDefinitionStrings.PrintSetVersionsDescription) { Arguments.Add(WorkloadVersionArgument); Options.Add(FormatOption); Options.Add(TakeOption); Options.Add(IncludePreviewsOption); TakeOption.Validators.Add(optionResult => { if (optionResult.GetValueOrDefault<int>() <= 0) { throw new ArgumentException("The --take option must be positive."); } }); Validators.Add(result => { if (result.GetValue(Parent.WorkloadIdStubArgument) != null) { result.AddError(string.Format(CommandDefinitionStrings.CannotCombineSearchStringAndVersion, Parent.WorkloadIdStubArgument.Name, Name)); } }); Validators.Add(result => { var versionArgument = result.GetValue(WorkloadVersionArgument); if (versionArgument is not null && !versionArgument.All(v => v.Contains('@')) && !WorkloadSetVersion.IsWorkloadSetPackageVersion(versionArgument.SingleOrDefault(defaultValue: string.Empty))) { result.AddError(string.Format(CommandDefinitionStrings.UnrecognizedCommandOrArgument, string.Join(' ', versionArgument))); } }); } public WorkloadSearchCommandDefinition Parent => (WorkloadSearchCommandDefinition)Parents.Single(); }