Exemple #1
0
        public UsagePrinter(CommandLineParserOptions parserOptions, ICommandLineCommandContainer container, IUsageBuilder builder)
        {
            m_parserOptions    = parserOptions;
            m_commandContainer = container;

            m_usageBuilder = builder;
        }
 /// <summary>
 /// Creates a new CLI output usage printer
 /// </summary>
 /// <param name="console"></param>
 /// <param name="container"></param>
 /// <param name="builder"></param>
 /// <param name="environmentVariablesService"></param>
 /// <param name="suggestionProvider"></param>
 public UsagePrinter(IConsole console, ICommandLineCommandContainer container, IUsageBuilder builder, IEnvironmentVariablesService environmentVariablesService, ISuggestionProvider suggestionProvider)
 {
     this.console = console ?? throw new ArgumentNullException(nameof(console));
     Container    = container ?? throw new ArgumentNullException(nameof(container));
     Builder      = builder ?? throw new ArgumentNullException(nameof(builder));
     this.environmentVariablesService = environmentVariablesService ?? throw new ArgumentNullException(nameof(environmentVariablesService));
     this.suggestionProvider          = suggestionProvider ?? throw new ArgumentNullException(nameof(suggestionProvider));
 }
        public IEnumerable <string> GetSuggestions(string input, ICommandLineCommandContainer command)
        {
            if (command is null)
            {
                return(Array.Empty <string>());
            }

            var suggestions = GetAvailableSuggestions(command);

            return(GetBestMatchesOrdered(suggestions, input));
        }
Exemple #4
0
            public ProcessingContext(ProcessingContext parent, ICommandLineCommandContainer commandContainer, ILogger logger)
            {
                this.logger = logger;

                parent?.AssertSafeToSwitchProcessingContext();

                ProcessingOrderedOptions = false;
                Parent            = parent;
                CurrentCommand    = commandContainer;
                orderedOptions    = new List <ICommandLineOption>(CurrentCommand.Options.Where(o => o.Order.HasValue));
                HasOrderedOptions = orderedOptions.Count > 0;
            }
        private IEnumerable <string> GetAvailableSuggestions(ICommandLineCommandContainer commandContext)
        {
            foreach (var cmd in commandContext.Commands)
            {
                yield return(cmd.Name);
            }

            foreach (var option in commandContext.Options)
            {
                if (option.HasShortName)
                {
                    yield return(option.ShortName);
                }

                if (option.HasLongName)
                {
                    yield return(option.LongName);
                }
            }
        }
Exemple #6
0
        /// <inheritdoc/>
        public void Process(IReadOnlyList <string> arguments, IList <Exception> errors, ICommandLineCommandContainer commandContainer)
        {
            results.Clear();
            unusedArguments.Clear();

            enumerator     = new ArgumentRecordEnumerator(options, arguments);
            CurrentContext = new ProcessingContext(null, commandContainer, logger);

            try
            {
                while (enumerator.MoveNext())
                {
                    var processed = ProcessNext();

                    if (!processed)
                    {
                        AddUnusedArgument(enumerator.Current);
                    }
                }
            }
            catch (InvalidOperationException invalidOpException)
            {
                logger.LogError(invalidOpException, "Error occured while processing the argument list");
                errors.Add(invalidOpException);
            }
            finally
            {
                enumerator?.Dispose();
                CurrentContext = null;
            }
        }