Пример #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);
        }
 public static void AddWorkloadCommandNuGetRestoreActionConfigOptions(this Command command, bool Hide = false)
 {
     command.AddOption(Hide ? HiddenDisableParallelOption : DisableParallelOption);
     command.AddOption(Hide ? HiddenIgnoreFailedSourcesOption : IgnoreFailedSourcesOption);
     command.AddOption(Hide ? HiddenNoCacheOption : NoCacheOption);
     command.AddOption(Hide ? HiddenInteractiveRestoreOption : InteractiveRestoreOption);
 }
 public static void AddWorkloadCommandNuGetRestoreActionConfigOptions(this Command command)
 {
     command.AddOption(DisableParallelOption);
     command.AddOption(IgnoreFailedSourcesOption);
     command.AddOption(NoCacheOption);
     command.AddOption(InteractiveRestoreOption);
 }
Пример #4
0
        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);
        }
Пример #5
0
        internal static CommandLineCommand WithHandler(this CommandLineCommand command, string name)
        {
            var flags  = BindingFlags.NonPublic | BindingFlags.Static;
            var method = typeof(Program).GetMethod(name, flags);

            var handler = CommandHandler.Create(method !);

            command.Handler = handler;
            return(command);
        }
Пример #6
0
        public static System.CommandLine.Command Build()
        {
            var command = new System.CommandLine.Command(
                "map",
                "地図を生成します"
                )
            {
                QuakeSubCommand.Build(),
                TsunamiSubCommand.Build(),
                UserquakeSubCommand.Build(),
            };

            return(command);
        }
Пример #7
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);
        }
Пример #8
0
        public static System.CommandLine.Command Build()
        {
            var command = new System.CommandLine.Command(
                "userquake",
                "地震感知情報の地図を生成します"
                )
            {
                new Option <string>("--output", () => "output.png"),
                new Option <bool>("--trim", () => true),
                new Option <MapType>("--map-type", () => MapType.JAPAN_1024),
                new Option <string[]>(new[] { "-a", "--areacode" }, () => Array.Empty <string>()),
                new Option <double[]>(new[] { "-c", "--confidence" }, () => Array.Empty <double>()),
                new Option <string>("--confidences-file"),
            };

            command.Handler = CommandHandler.Create <UserquakeOptions>(UserquakeHandler);

            return(command);
        }
Пример #9
0
        public static System.CommandLine.Command Build()
        {
            var command = new System.CommandLine.Command(
                "tsunami",
                "津波予報の地図を生成します"
                )
            {
                new Option <string>("--output", () => "output.png"),
                new Option <bool>("--trim", () => true),
                new Option <MapType>("--map-type", () => MapType.JAPAN_1024),
                new Option <string[]>(new[] { "-c", "--category" }, () => Array.Empty <string>()),
                new Option <string[]>(new[] { "-r", "--region" }, () => Array.Empty <string>()),
                new Option <string>("--regions-file"),
                new Option <bool>("--draw", () => true),
            };

            command.Handler = CommandHandler.Create <TsunamiOptions>(TsunamiHandler);

            return(command);
        }
Пример #10
0
        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);
        }
Пример #11
0
        public static System.CommandLine.Command Build()
        {
            var command = new System.CommandLine.Command(
                "quake",
                "地震情報の地図を生成します"
                )
            {
                new Option <string>("--output", () => "output.png"),
                new Option <bool>("--trim", () => true),
                new Option <MapType>("--map-type", () => MapType.JAPAN_1024),
                new Option <double?>("--latitude"),
                new Option <double?>("--longitude"),
                new Option <string[]>(new[] { "-p", "--pref", "--prefecture" }, () => Array.Empty <string>()),
                new Option <string[]>(new[] { "-n", "--name" }, () => Array.Empty <string>()),
                new Option <int[]>(new[] { "-s", "--scale" }, () => Array.Empty <int>()),
                new Option <string>("--points-file"),
            };

            command.Handler = CommandHandler.Create <QuakeOptions>(QuakeHandler);

            return(command);
        }
Пример #12
0
        public static void AddOptions(this System.CommandLine.Command command, Type commandOptionsType)
        {
            var propertyInfos = commandOptionsType.GetProperties(DeclaredOnly);

            foreach (var propertyInfo in propertyInfos)
            {
                var optionAttribute = propertyInfo.GetCustomAttribute <OptionAttribute>();
                if (optionAttribute == null)
                {
                    continue;
                }

                var option = new Option(optionAttribute.Aliases, optionAttribute.Description)
                {
                    IsRequired = optionAttribute.IsRequired,
                    Argument   = new Argument {
                        ArgumentType = propertyInfo.PropertyType
                    }
                };
                command.AddOption(option);
            }
        }