Exemplo n.º 1
0
        public static void Main(string[] args)
        {
            if (args.Length == 0 || args[0] == "-h" || args[0] == "--help" || args[0] == "help" || args[0] == "/?")
            {
                ShowHelp();
                return;
            }

            var levelSwitch = new LoggingLevelSwitch();

            levelSwitch.MinimumLevel = Serilog.Events.LogEventLevel.Information;

            var logger = new LoggerConfiguration()
                         .MinimumLevel.ControlledBy(levelSwitch)
                         .WriteTo
                         .LiterateConsole()
                         .CreateLogger();


            try
            {
                var    options             = new Options();
                object invokedVerbInstance = null;
                var    parser = new Parser(config => config.HelpWriter = null);

                // Parse the command line arguments
                bool parseSuccess = parser.ParseArguments(args, options, (verb, verbInstance) =>
                {
                    invokedVerbInstance = verbInstance;
                });

                if (!parseSuccess)
                {
                    ShowHelp();
                    return;
                }

                // Execute the ICommand that the CommandLineParser found
                var command = invokedVerbInstance as ICommand;
                if (command != null)
                {
                    if (command.VerboseLogging)
                    {
                        levelSwitch.MinimumLevel = Serilog.Events.LogEventLevel.Debug;
                    }

                    var serviceLocator = new ServiceLocator(logger);
                    serviceLocator.BuildContainer();

                    command.Logger = logger;
                    command.Run(serviceLocator);
                    System.Console.WriteLine();
                }
            }
            catch (Exception e)
            {
                logger.Error($"Unhandled error: {e.Message}");
            }
        }
Exemplo n.º 2
0
        public void should_register_remy_types()
        {
            // given
            var serviceLocator = new ServiceLocator(_logger);

            serviceLocator.BuildContainer();

            // when
            IContainer container = serviceLocator.Container;

            // then
            Assert.That(container.GetInstance <IPowershellRunner>, Is.TypeOf <PowershellRunner>());
            Assert.That(container.GetInstance <IFileProvider>, Is.TypeOf <FileProvider>());
            Assert.That(container.GetInstance <IConfigFileReader>, Is.TypeOf <ConfigFileReader>());
            Assert.That(container.GetInstance <ILogger>, Is.Not.Null);
            Assert.That(container.GetInstance <IYamlConfigParser>, Is.TypeOf <YamlConfigParser>());
        }
Exemplo n.º 3
0
        public void should_add_tasks_from_plugins_directory()
        {
            // given + when
            var serviceLocator = new ServiceLocator(_logger);

            serviceLocator.BuildContainer();
            IEnumerable <ITask> taskInstances = serviceLocator.Container.GetInstance <IEnumerable <ITask> >();

            Dictionary <string, ITask> tasks = serviceLocator.TasksAsDictionary(taskInstances);

            // then
            Assert.That(tasks.Count, Is.EqualTo(6));

            KeyValuePair <string, ITask> task = tasks.FirstOrDefault(x => x.Key == "mock-task");

            Assert.That(task, Is.Not.Null);
            Assert.That(task.Key, Is.EqualTo(task.Value.YamlName));
            Assert.That(task.Value, Is.Not.Null);
            Assert.That(task.Value.GetType().Name, Is.EqualTo(typeof(MockTask).Name));
        }