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 IntegrationTestFixture() { LoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create( builder => { builder.AddFilter((level) => level >= LogLevel.Information) .AddConsole(); }); var services = new ServiceCollection() .AddLogging() .AddCoreComponents() .AddScriptAnalyzers() .AddParserComponents() .AddTasks(); var config = new FlubuConfiguration(); services.AddSingleton(config); services.AddSingleton(new CommandArguments()); ServiceProvider = services.BuildServiceProvider(); }
public async System.Threading.Tasks.Task LoadDefaultScript() { var scriptFileName = "e.cs"; var asmbFileName = _loader.GetBuildScriptAssemblyFileName(scriptFileName, fullPath: false); if (File.Exists(asmbFileName)) { File.Delete(asmbFileName); } CommandArguments args = new CommandArguments(); _scriptLocator.Setup(x => x.FindBuildScript(args)).Returns(scriptFileName); _fileLoader.Setup(i => i.ReadAllLines(scriptFileName)) .Returns(new List <string> { "using System;", "using FlubuCore.Context;", "using FlubuCore.Scripting;", string.Empty, "public class MyBuildScript : DefaultBuildScript", "{", " protected override void ConfigureBuildProperties(IBuildPropertiesContext context)", " {", " System.Console.WriteLine(\"2222\");", " }", string.Empty, " protected override void ConfigureTargets(ITaskContext context)", " {", " Console.WriteLine(\"2222\");", " }", " }" }); _analyzer.Setup(i => i.Analyze(It.IsAny <List <string> >())) .Returns(new ScriptAnalyzerResult() { ClassName = "MyBuildScript" }); FlubuConfiguration configuration = new FlubuConfiguration(); IBuildScript t = await _loader.FindAndCreateBuildScriptInstanceAsync(args); var provider = new ServiceCollection() .AddSingleton <IScriptProperties, ScriptProperties>() .AddSingleton <ITargetCreator, TargetCreator>() .AddSingleton(configuration) .BuildServiceProvider(); var targetTree = new TargetTree(provider, new CommandArguments()); t.Run(new FlubuSession( _loggerTaskSession.Object, targetTree, new CommandArguments(), new ScriptServiceProvider(provider), new DotnetTaskFactory(provider), new FluentInterfaceFactory(provider), new BuildPropertiesSession(targetTree), new BuildServer())); }
public async Task LoadSimpleScript() { var scriptFileName = "e3.cs"; var asmbFileName = _loader.GetBuildScriptAssemblyFileName(scriptFileName, fullPath: false); if (File.Exists(asmbFileName)) { File.Delete(asmbFileName); } CommandArguments args = new CommandArguments(); _scriptLocator.Setup(x => x.FindBuildScript(args)).Returns(scriptFileName); _fileLoader.Setup(i => i.ReadAllLines(scriptFileName)) .Returns(new List <string> { "using FlubuCore.Scripting;", "using System;", "using FlubuCore;", "using FlubuCore.Context;", "using Microsoft.Extensions.DependencyInjection;", "using Microsoft.Extensions.Logging;", string.Empty, "public class MyBuildScript : IBuildScript", "{", " public int Run(IFlubuSession session)", " {", " Console.WriteLine(\"11\");", " return 0;", " }", " public void ConfigureServices(IServiceCollection services)", " {", " }", " public void Configure(IFlubuConfigurationBuilder configurationBuilder, ILoggerFactory loggerFactory)", " {", " }", "}", }); _analyzer.Setup(i => i.Analyze(It.IsAny <List <string> >())) .Returns(new ScriptAnalyzerResult() { ClassName = "MyBuildScript" }); IBuildScript t = await _loader.FindAndCreateBuildScriptInstanceAsync(args); FlubuConfiguration configuration = new FlubuConfiguration(); var provider = new ServiceCollection() .AddSingleton <IScriptProperties, ScriptProperties>() .AddSingleton <ITargetCreator, TargetCreator>() .AddSingleton(configuration) .BuildServiceProvider(); var targetTree = new TargetTree(provider, new CommandArguments()); t.Run(new FlubuSession( _loggerTaskSession.Object, targetTree, new CommandArguments(), new ScriptServiceProvider(provider), new DotnetTaskFactory(provider), new FluentInterfaceFactory(provider), new BuildPropertiesSession(targetTree), new BuildServer())); }
public int Run(IFlubuSession flubuSession) { _flubuSession = flubuSession; _scriptProperties = flubuSession.ScriptServiceProvider.GetScriptProperties(); _targetCreator = flubuSession.ScriptServiceProvider.GetTargetCreator(); _flubuConfiguration = flubuSession.ScriptServiceProvider.GetFlubuConfiguration(); try { ConfigureDefaultProps(flubuSession); BeforeBuildExecution(flubuSession); RunBuild(flubuSession); flubuSession.Complete(); AfterBuildExecution(flubuSession); return(0); } catch (TargetNotFoundException e) { flubuSession.ResetDepth(); OnBuildFailed(flubuSession, e); AfterBuildExecution(flubuSession); if (flubuSession.Args.RethrowOnException) { throw; } flubuSession.LogError($"{Environment.NewLine}{e.Message}"); return(3); } catch (WebApiException e) { flubuSession.ResetDepth(); OnBuildFailed(flubuSession, e); AfterBuildExecution(flubuSession); if (flubuSession.Args.RethrowOnException) { throw; } return(1); } catch (FlubuException e) { flubuSession.ResetDepth(); OnBuildFailed(flubuSession, e); if (!flubuSession.Args.RethrowOnException) { flubuSession.LogError($"ERROR: {e.Message}", Color.Red); } AfterBuildExecution(flubuSession); if (flubuSession.Args.RethrowOnException) { throw; } return(1); } catch (Exception e) { flubuSession.ResetDepth(); OnBuildFailed(flubuSession, e); if (!flubuSession.Args.RethrowOnException) { flubuSession.LogError($"ERROR: {e}", Color.Red); } AfterBuildExecution(flubuSession); if (flubuSession.Args.RethrowOnException) { throw; } return(2); } }