public virtual async Task <int> ExecuteAsync() { if (Args.DisableColoredLogging) { FlubuConsoleLogger.DisableColloredLogging = true; } if (Args.Help) { return(1); } if (Args.IsInternalCommand()) { await ExecuteInternalCommand(); return(0); } try { var script = await _scriptProvider.GetBuildScriptAsync(Args); FlubuSession.ScriptArgs = Args.ScriptArguments; FlubuSession.TargetTree.BuildScript = script; FlubuSession.Properties.Set(BuildProps.IsWebApi, Args.IsWebApi); var result = script.Run(FlubuSession); return(result); } catch (TaskExecutionException e) { if (Args.RethrowOnException) { throw; } _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{e.ToString()}", null, (t, ex) => t); return(StatusCodes.BuildScriptNotFound); } catch (FlubuException e) { if (Args.RethrowOnException) { throw; } var str = Args.Debug ? e.ToString() : e.Message; _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{str}", null, (t, ex) => t); return(StatusCodes.BuildScriptNotFound); } catch (Exception e) { if (Args.RethrowOnException) { throw; } var str = Args.Debug ? e.ToString() : e.Message; _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{str}", null, (t, ex) => t); return(3); } }
public virtual async Task <int> ExecuteAsync() { if (Args.DisableColoredLogging) { FlubuConsoleLogger.DisableColloredLogging = true; } if (Args.Help) { return(1); } if (Args.IsInternalCommand()) { await ExecuteInternalCommand(); return(0); } try { int result = 0; do { IBuildScript script = null; try { if (!_flubuSession.InteractiveMode) { script = await _scriptProvider.GetBuildScriptAsync(Args); } else { script = await _scriptProvider.GetBuildScriptAsync(_flubuSession .InteractiveArgs, true); } } catch (BuildScriptLocatorException) { if (Args.InteractiveMode && !_flubuSession.InteractiveMode) { _flubuSession.LogInfo("Build script not found."); script = await SimpleFlubuInteractiveMode(script); } else { throw; } } _flubuSession.ScriptArgs = Args.ScriptArguments; _flubuSession.InteractiveMode = Args.InteractiveMode; _flubuSession.InteractiveArgs = Args; _flubuSession.TargetTree.BuildScript = script; _flubuSession.Properties.Set(BuildProps.IsWebApi, Args.IsWebApi); _flubuSession.TargetTree.ResetTargetTree(); if (script != null) { if (_flubuSession.InteractiveMode) { FlubuInteractiveMode(_flubuSession, script); } else { result = script.Run(_flubuSession); } } }while (_flubuSession.InteractiveMode && InternalTerminalCommands.ReloadCommands.Contains(_flubuSession.InteractiveArgs.MainCommands[0], StringComparer.OrdinalIgnoreCase)); return(result); } catch (TaskExecutionException e) { if (Args.RethrowOnException) { throw; } _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{e}", null, (t, ex) => t); return(StatusCodes.BuildScriptNotFound); } catch (FlubuException e) { if (Args.RethrowOnException) { throw; } var str = Args.Debug ? e.ToString() : e.Message; _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{str}", null, (t, ex) => t); return(StatusCodes.BuildScriptNotFound); } catch (Exception e) { if (Args.RethrowOnException) { throw; } var str = Args.Debug ? e.ToString() : e.Message; _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{str}", null, (t, ex) => t); return(3); } }
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); }