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); }
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(); }
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); }