コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: jenzy-forks/flubu.core
        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);
        }