Exemple #1
0
        static void Main(string[] args)
        {
            _argumentGetter = new ArgumentGetter(args);
            _localManifest  = LoadLocalManifest();

            PrintWelcomeText();
            CheckForUpdate();

            var progressContext = new ProgressContext(new ConsoleProgressOutput(14));
            var dialogManager   = new ConsoleDialogManager(_argumentGetter, progressContext);
            var logger          = new LoggerConfiguration().WriteTo.Console().CreateLogger();
            var pluginManager   = new PluginManager("plugins")
            {
                DialogManager = dialogManager,
                Progress      = progressContext,
                Logger        = logger
            };

            pluginManager.OnManualSelection += PluginManager_OnManualSelection;

            PrintUnloadedPlugins(pluginManager.LoadErrors);

            IContext context = new MainContext(pluginManager, progressContext);

            while (context != null)
            {
                context.PrintCommands();

                context = context.ExecuteNext(_argumentGetter).Result;
            }
        }
Exemple #2
0
        public ConsoleDialogManager(IArgumentGetter argumentGetter, IProgressContext progress)
        {
            ContractAssertions.IsNotNull(argumentGetter, nameof(argumentGetter));
            ContractAssertions.IsNotNull(progress, nameof(progress));

            _argumentGetter = argumentGetter;
            _progress       = progress;
        }
Exemple #3
0
        public async Task <IContext> ExecuteNext(IArgumentGetter argumentGetter)
        {
            var commandName = argumentGetter.GetNextArgument();

            // Check if command exists
            var command = Commands.FirstOrDefault(x => x.Name == commandName);

            if (command == null)
            {
                Console.WriteLine($"Command '{commandName}' is not supported.");
                return(this);
            }

            Console.Clear();

            // Execute command
            var arguments = argumentGetter.GetNextArguments(command.Arguments.Length);

            return(await ExecuteNextInternal(command, arguments));
        }