예제 #1
0
파일: Loop.cs 프로젝트: gitter-badger/NClap
        /// <summary>
        /// Executes one iteration of the loop.
        /// </summary>
        /// <returns>The result of executing.</returns>
        public CommandResult ExecuteOnce()
        {
            Client.DisplayPrompt();

            var args = ReadInput();

            if (args == null)
            {
                return(CommandResult.Terminate);
            }
            if (args.Length == 0)
            {
                return(CommandResult.Success);
            }

            var options = new CommandLineParserOptions
            {
                Reporter = error => Client.OnError(error.ToString().TrimEnd())
            };

            var commandGroup = new CommandGroup <TCommandType>();

            if (!CommandLineParser.Parse(args, commandGroup, options))
            {
                Client.OnError(Strings.InvalidUsage);
                return(CommandResult.UsageError);
            }

            return(commandGroup.Execute());
        }