Exemple #1
0
        public void Set(string?value, ParserState args, IValueParser valueParser)
        {
            if (value == null)
            {
                value = DefaultValue();
            }

            if (value == null && args.HasCurrent)
            {
                value = args.Consume();
            }

            if (value == null)
            {
                throw new CommandLineException(args, $"Value is missing for {this}.");
            }

            Set(value, valueParser);
        }
Exemple #2
0
        public async Task <object?[]> Run()
        {
            var results = new List <object?>();
            var args    = new ParserState(Operands.ToArray());


            if (!args.HasCurrent)
            {
                var defaultCommand = DefaultCommand;
                if (defaultCommand == null)
                {
                    throw new NoDefaultCommandException();
                }
                else
                {
                    results.Add(await defaultCommand.Invoke(args, valueParser));
                }
            }
            else
            {
                while (args.HasCurrent)
                {
                    var defaultCommand = DefaultCommand;
                    if (defaultCommand == null)
                    {
                        var commandName = args.Current;
                        var command     = commandProvider.GetCommand(commandName);
                        args.Consume();
                        results.Add(await command.Invoke(args, valueParser));
                    }
                    else
                    {
                        // command found?
                        // execute
                        // else
                        // execute default command
                        // check that is consumes arguments to avoid endless loop

                        var commandName = args.Current;
                        var command     = commandProvider.TryGetCommand(commandName);
                        if (command is { })