From a1497ffb7a8743fb9fd61a28271aeb70ded4cd48 Mon Sep 17 00:00:00 2001 From: Chet Husk Date: Sat, 5 Jul 2025 08:11:16 -0500 Subject: [PATCH 1/2] push version and info command activation into the Option definitions --- .../Workload/WorkloadCommandParser.cs | 59 ++++++++++++------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs b/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs index c7cfee854fc8..1c53db4d6795 100644 --- a/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs +++ b/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs @@ -21,23 +21,25 @@ using Microsoft.TemplateEngine.Cli.Commands; using IReporter = Microsoft.DotNet.Cli.Utils.IReporter; using Command = System.CommandLine.Command; +using System.CommandLine.Invocation; namespace Microsoft.DotNet.Cli.Commands.Workload; internal static class WorkloadCommandParser { public static readonly string DocsLink = "https://aka.ms/dotnet-workload"; - public static readonly Option InfoOption = new("--info") { Description = CliCommandStrings.WorkloadInfoDescription, - Arity = ArgumentArity.Zero + Arity = ArgumentArity.Zero, + Action = new ShowWorkloadsInfoAction() }; public static readonly Option VersionOption = new("--version") { Description = CliCommandStrings.WorkloadVersionDescription, - Arity = ArgumentArity.Zero + Arity = ArgumentArity.Zero, + Action = new ShowWorkloadsVersionOption() }; public static Command GetCommand() @@ -78,11 +80,11 @@ void WriteUpdateModeAndAnyError(string indent = "") reporter.WriteLine(indent + CliCommandStrings.ShouldInstallAWorkloadSet); } } - + if (showVersion) { reporter.WriteLine($" Workload version: {GetWorkloadsVersion()}"); - + WriteUpdateModeAndAnyError(indent: " "); reporter.WriteLine(); } @@ -134,22 +136,7 @@ void WriteUpdateModeAndAnyError(string indent = "") } } - private static int ProcessArgs(ParseResult parseResult) - { - if (parseResult.HasOption(InfoOption) && parseResult.RootSubCommandResult() == "workload") - { - ShowWorkloadsInfo(parseResult); - Reporter.Output.WriteLine(string.Empty); - return 0; - } - else if (parseResult.HasOption(VersionOption) && parseResult.RootSubCommandResult() == "workload") - { - Reporter.Output.WriteLine(GetWorkloadsVersion()); - Reporter.Output.WriteLine(string.Empty); - return 0; - } - return parseResult.HandleMissingCommand(); - } + private static int ProcessArgs(ParseResult parseResult) => parseResult.HandleMissingCommand(); private static Command ConstructCommand() { @@ -182,4 +169,34 @@ private static Command ConstructCommand() return command; } + + private class ShowWorkloadsInfoAction : SynchronousCommandLineAction + { + public ShowWorkloadsInfoAction() + { + Terminating = true; + } + + public override int Invoke(ParseResult parseResult) + { + ShowWorkloadsInfo(parseResult); + Reporter.Output.WriteLine(string.Empty); + return 0; + } + } + + private class ShowWorkloadsVersionOption : SynchronousCommandLineAction + { + public ShowWorkloadsVersionOption() + { + Terminating = true; + } + + public override int Invoke(ParseResult parseResult) + { + Reporter.Output.WriteLine(GetWorkloadsVersion()); + Reporter.Output.WriteLine(string.Empty); + return 0; + } + } } From 0d2b512adf71b1a2b600faf59d50256ad7a0a445 Mon Sep 17 00:00:00 2001 From: Chet Husk Date: Fri, 11 Jul 2025 10:46:56 -0500 Subject: [PATCH 2/2] sort usings --- src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs b/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs index 1c53db4d6795..9188e4589aba 100644 --- a/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs +++ b/src/Cli/dotnet/Commands/Workload/WorkloadCommandParser.cs @@ -4,6 +4,7 @@ #nullable disable using System.CommandLine; +using System.CommandLine.Invocation; using Microsoft.DotNet.Cli.Commands.Workload.Clean; using Microsoft.DotNet.Cli.Commands.Workload.Config; using Microsoft.DotNet.Cli.Commands.Workload.Elevate; @@ -21,7 +22,6 @@ using Microsoft.TemplateEngine.Cli.Commands; using IReporter = Microsoft.DotNet.Cli.Utils.IReporter; using Command = System.CommandLine.Command; -using System.CommandLine.Invocation; namespace Microsoft.DotNet.Cli.Commands.Workload;