private static Command ConfigureCommandLine(Command rootCommand) { // Add subcommands foreach (var subcommand in Subcommands) { rootCommand.AddCommand(subcommand); } // Workload command is behind a feature flag during development if (Env.GetEnvironmentVariableAsBool("DEVENABLEWORKLOADCOMMAND", defaultValue: false)) { rootCommand.AddCommand(WorkloadCommandParser.GetCommand()); } //Add internal commands rootCommand.AddCommand(InstallSuccessCommand); // Add options rootCommand.AddOption(DiagOption); rootCommand.AddOption(VersionOption); rootCommand.AddOption(InfoOption); rootCommand.AddOption(ListSdksOption); rootCommand.AddOption(ListRuntimesOption); // Add argument rootCommand.AddArgument(DotnetSubCommand); return(rootCommand); }
private static Command ConfigureCommandLine(Command rootCommand) { // Add subcommands foreach (var subcommand in Subcommands) { rootCommand.AddCommand(subcommand); } rootCommand.AddCommand(WorkloadCommandParser.GetCommand()); //Add internal commands rootCommand.AddCommand(InstallSuccessCommand); // Add options rootCommand.AddOption(DiagOption); rootCommand.AddOption(VersionOption); rootCommand.AddOption(InfoOption); rootCommand.AddOption(ListSdksOption); rootCommand.AddOption(ListRuntimesOption); // Add argument rootCommand.AddArgument(DotnetSubCommand); return(rootCommand); }
private static RootCommand MapCommands(IEnumerable <ICommandHandler> handlers) { var commandsMap = new Dictionary <Type, Infrastructure.Command>(); foreach (var handler in handlers) { var handlerType = handler?.GetType(); var commandOptionsType = handlerType?.BaseType?.GenericTypeArguments[0]; if (commandOptionsType != null) { var commandAttribute = commandOptionsType.GetCustomAttribute <CommandAttribute>(); if (commandAttribute != null) { var command = new Infrastructure.Command(commandAttribute.Name, commandAttribute.Description) { Parent = commandAttribute.Parent }; command.AddOptions(commandOptionsType); var handlerMethod = handlerType?.GetMethod(nameof(ICommandHandler.InvokeAsync)); command.Handler = CommandHandler.Create(handlerMethod !, handler); commandsMap.Add(commandOptionsType, command); } } } var parentGroups = commandsMap.GroupBy(x => x.Value.Parent, x => x.Key).ToList(); var rootCommand = new RootCommand(); foreach (var parentGroup in parentGroups) { System.CommandLine.Command command = parentGroup.Key is null ? rootCommand : commandsMap[parentGroup.Key]; foreach (var child in parentGroup) { command.AddCommand(commandsMap[child]); } } return(rootCommand); }
private static Command ConfigureCommandLine(Command rootCommand) { // Add subcommands foreach (var subcommand in Subcommands) { rootCommand.AddCommand(subcommand); } // Add options rootCommand.AddOption(DiagOption); rootCommand.AddOption(VersionOption); rootCommand.AddOption(InfoOption); rootCommand.AddOption(ListSdksOption); rootCommand.AddOption(ListRuntimesOption); // Add argument rootCommand.AddArgument(DotnetSubCommand); return(rootCommand); }