Ejemplo n.º 1
0
        public FlubuEngine()
        {
            LoggerFactory             = new LoggerFactory();
            FlubuConfigurationBuilder = new FlubuConfigurationBuilder();
            LoggerFactory.AddProvider(new FlubuLoggerProvider());
            var loggers = ServiceDescriptor.Singleton(typeof(ILogger <>), typeof(Logger <>));
            var app     = new CommandLineApplication()
            {
                UnrecognizedArgumentHandling = UnrecognizedArgumentHandling.CollectAndContinue
            };

            FlubuConfiguration flubuConfiguration = new FlubuConfiguration();
            CommandArguments   arguments          = new CommandArguments();
            var serviceCollection = new ServiceCollection()
                                    .AddCoreComponents()
                                    .AddTasks()
                                    .AddSingleton(app)
                                    .AddSingleton(LoggerFactory)
                                    .AddSingleton <IBuildScriptLocator, BuildScriptLocator>()
                                    .AddSingleton <IFlubuConfigurationProvider, FlubuConfigurationProvider>()
                                    .AddSingleton <IFlubuCommandParser, FlubuCommandParser>()
                                    .AddSingleton(arguments);

            serviceCollection.TryAdd(loggers);
            serviceCollection.AddSingleton(flubuConfiguration);
            ServiceProvider = serviceCollection.BuildServiceProvider();

            TaskFactory = new DotnetTaskFactory(ServiceProvider);
        }
Ejemplo n.º 2
0
        public FlubuEngine(IServiceCollection serviceCollection, ILoggerFactory loggerFactory = null)
        {
            LoggerFactory = loggerFactory == null ? new LoggerFactory() : loggerFactory;
            LoggerFactory.AddProvider(new FlubuLoggerProvider());
            ServiceProvider = serviceCollection.AddCoreComponents()
                              .AddTasks()
                              .BuildServiceProvider();

            TaskFactory = new DotnetTaskFactory(ServiceProvider);
            FlubuConfigurationBuilder = new FlubuConfigurationBuilder();
        }
Ejemplo n.º 3
0
        private static async Task <int> FlubuStartup(string[] args)
        {
            IServiceCollection startUpServiceCollection = new ServiceCollection();

            startUpServiceCollection.AddScriptAnalyzers()
            .AddCoreComponents()
            .AddCommandComponents(false)
            .AddParserComponents()
            .AddScriptAnalyzers();

            Services.AddFlubuLogging(startUpServiceCollection);

            var                        startupProvider           = startUpServiceCollection.BuildServiceProvider();
            var                        parser                    = startupProvider.GetRequiredService <IFlubuCommandParser>();
            var                        commandArguments          = parser.Parse(args);
            IScriptProvider            scriptProvider            = startupProvider.GetRequiredService <IScriptProvider>();
            IFlubuConfigurationBuilder flubuConfigurationBuilder = new FlubuConfigurationBuilder();
            ILoggerFactory             loggerFactory             = startupProvider.GetRequiredService <ILoggerFactory>();

            loggerFactory.AddProvider(new FlubuLoggerProvider());
            _logger = startupProvider.GetRequiredService <ILogger <CommandExecutor> >();
            var version = Assembly.GetEntryAssembly().GetCustomAttribute <AssemblyFileVersionAttribute>().Version;

            _logger.LogInformation($"Flubu v.{version}");

            IBuildScript script = null;

            if (!commandArguments.IsInternalCommand())
            {
                try
                {
                    script = await scriptProvider.GetBuildScriptAsync(commandArguments);
                }
                catch (BuildScriptLocatorException e)
                {
                    if (!commandArguments.InteractiveMode)
                    {
                        var str = commandArguments.Debug ? e.ToString() : e.Message;
                        _logger.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{str}", null, (t, ex) => t);
                        return(StatusCodes.BuildScriptNotFound);
                    }
                }
            }

            Services
            .AddCoreComponents()
            .AddParserComponents()
            .AddCommandComponents(interactiveMode: commandArguments.InteractiveMode)
            .AddScriptAnalyzers()
            .AddTasks();

            Services.AddSingleton(loggerFactory);
            Services.AddSingleton(commandArguments);

            if (script != null)
            {
                script.ConfigureServices(Services);
                script.Configure(flubuConfigurationBuilder, loggerFactory);
            }

            Services.AddSingleton(flubuConfigurationBuilder.Build());

            _provider = Services.BuildServiceProvider();
            return(0);
        }