示例#1
0
        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);
        }
示例#2
0
文件: Parser.cs 项目: agocke/sdk
        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);
        }
示例#3
0
        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);
        }
示例#4
0
文件: Parser.cs 项目: nohwnd/sdk
        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);
        }