Exemple #1
0
        private void GetCHKTypes(int ToolInvId)
        {
            chkGWISTypes.DataBind();

            //get current value
            if (ToolInvId == 0)
            {
                foreach (ListEditItem item in chkGWISTypes.Items)
                {
                    item.Selected = false;
                }
            }
            else
            {
                string typeIdList = ToolRepository.GetCurrentAssignedModels(ToolInvId);
                if (typeIdList == null)
                {
                    return;
                }

                string[] typeIds = typeIdList.Split(',');
                foreach (string typeId in typeIds)
                {
                    foreach (ListEditItem item in chkGWISTypes.Items)
                    {
                        if (item.Value.Equals(typeId))
                        {
                            item.Selected = true;
                            break;
                        }
                    }
                }
            }
        }
Exemple #2
0
        public FakeCakeContext()
        {
            testsDir = new DirectoryPath(
                System.IO.Path.GetFullPath(AppContext.BaseDirectory));

            var fileSystem = new FileSystem();

            log = new FakeLog();
            var runtime     = new CakeRuntime();
            var platform    = new FakePlatform(PlatformFamily.Windows);
            var environment = new CakeEnvironment(platform, runtime);
            var globber     = new Globber(fileSystem, environment);

            var args     = new FakeCakeArguments();
            var registry = new WindowsRegistry();

            var          dataService            = new FakeDataService();
            var          toolRepository         = new ToolRepository(environment);
            var          config                 = new FakeConfiguration();
            var          toolResolutionStrategy = new ToolResolutionStrategy(fileSystem, environment, globber, config, log);
            IToolLocator tools         = new ToolLocator(environment, toolRepository, toolResolutionStrategy);
            var          processRunner = new ProcessRunner(fileSystem, environment, log, tools, config);

            context = new CakeContext(fileSystem, environment, globber, log, args, processRunner, registry, tools, dataService, config);
            context.Environment.WorkingDirectory = testsDir;
        }
        static CakeAPI()
        {
            var env        = new CakeEnvironment(new CakePlatform(), new CakeRuntime());
            var fileSystem = new FileSystem();

            var verbosity = Verbosity.Normal;

            if (Startup.HasArgument("cake-verbosity"))
            {
                verbosity = Enum.Parse <Verbosity>(Startup.Argument("cake-verbosity"));
            }
            var cakeLog = new CakeBuildLog(new CakeConsole(env), verbosity);

            var cakeConfiguration = new CakeConfiguration(new Dictionary <string, string>());
            var toolRepos         = new ToolRepository(env);

            Globber = new Globber(fileSystem, env);
            var cakeDataService = new CakeDataService();
            var registry        = new WindowsRegistry();
            var toolLocator     = new ToolLocator(env, toolRepos, new ToolResolutionStrategy(fileSystem, env, Globber, cakeConfiguration, cakeLog));
            var cakeArgs        = new CakeArguments(new List <string>().ToLookup(x => x));
            var procRunner      = new ProcessRunner(fileSystem, env, cakeLog, toolLocator, cakeConfiguration);

            Context = new CakeContext(fileSystem, env, Globber, cakeLog, cakeArgs, procRunner, registry, toolLocator, cakeDataService, cakeConfiguration);
        }
Exemple #4
0
        public FakeCakeContext()
        {
            var fileSystem = new FileSystem();

            Log = new FakeLog();
            var runtime     = new CakeRuntime();
            var platform    = new FakePlatform(PlatformFamily.Windows);
            var environment = new CakeEnvironment(platform, runtime, Log);
            var globber     = new Globber(fileSystem, environment);

            var args     = Substitute.For <ICakeArguments>();
            var registry = new WindowsRegistry();

            var dataService            = Substitute.For <ICakeDataService>();
            var toolRepository         = new ToolRepository(environment);
            var toolResolutionStrategy = new ToolResolutionStrategy(fileSystem, environment, globber, new FakeConfiguration());
            var tools         = new ToolLocator(environment, toolRepository, toolResolutionStrategy);
            var processRunner = new ProcessRunner(fileSystem, environment, Log, tools, new FakeConfiguration());

            Context = new CakeContext(fileSystem, environment, globber, Log, args, processRunner, registry, tools, dataService);

            WorkingDirectory = new DirectoryPath(
                System.IO.Path.GetFullPath(AppContext.BaseDirectory));
            Context.Environment.WorkingDirectory = WorkingDirectory;
        }
Exemple #5
0
        public FakeCakeContext()
        {
            var testsDir = new DirectoryPath(System.IO.Path.GetFullPath(AppContext.BaseDirectory));

            var fileSystem  = new FileSystem();
            var environment = new FakeEnvironment(PlatformFamily.Windows);
            var globber     = new Globber(fileSystem, environment);
            var log         = new FakeLog();
            var args        = new FakeCakeArguments();
            var toolRepo    = new ToolRepository(environment);
            var config      =
                new CakeConfigurationProvider(fileSystem, environment)
                .CreateConfiguration(testsDir,
                                     new Dictionary <string, string>());
            var toolResolutionStrategy = new ToolResolutionStrategy(fileSystem, environment, globber, config);
            var toolLocator            = new ToolLocator(environment, toolRepo, toolResolutionStrategy);
            var processRunner          = new ProcessRunner(fileSystem, environment, log, toolLocator, config);
            var registry    = new WindowsRegistry();
            var dataService = new FakeDataService();

            _context = new CakeContext(
                fileSystem,
                environment,
                globber,
                log,
                args,
                processRunner,
                registry,
                toolLocator,
                dataService,
                config);

            _context.Environment.WorkingDirectory = testsDir;
        }
        /// <summary>
        ///     Injection constructor.
        /// </summary>
        /// <param name="documentWriter">Instance injected by DI.</param>
        /// <param name="listener">Instance injected by DI.</param>
        /// <param name="schema">Instance injected by DI.</param>
        /// <param name="cosmos">Injected instance of the gateway for setting up the database</param>
        /// <param name="stores">Injected instance of the repository for setting up the database</param>
        /// <param name="tools">Injected instance of the repository for setting up the database</param>
        public QueryService(IDocumentWriter documentWriter, DataLoaderDocumentListener listener, StoreSchema schema,
                            CosmosGateway cosmos, StoreRepository stores, ToolRepository tools)
        {
            _documentWriter = documentWriter;
            _listener       = listener;
            _schema         = schema;

            _cosmos = cosmos;
            _stores = stores;
            _tools  = tools;
        }
Exemple #7
0
        public void HealthCheckSuccessful()
        {
            var content  = File.ReadAllText("../../Fixtures/tool_health_status.json");
            var client   = GetMockClient(content);
            var repo     = new ToolRepository(client.Object);
            var response = repo.HealthCheck();

            client.VerifyAll();
            Assert.IsNotNull(response);
            Assert.AreEqual("healthy", response["status"]);
        }
Exemple #8
0
        protected void btnReturnTool_Click(object sender, EventArgs e)
        {
            int toolInvId = Session["ToolInvId"].ToInt32(0);

            int  rackId     = cmbRacks.Value.ToInt32(0);
            bool toolStatus = !chkStatus.Checked;

            bool status = ToolRepository.ReturnTool(rackId, toolStatus, toolInvId, User.UserName);

            if (status)
            {
                popupToolReturn.ShowOnPageLoad = false;
            }

            masterGrid.DataBind();
        }
Exemple #9
0
 public FakeCakeContext ()
 {
     testsDir = new DirectoryPath (
         System.IO.Path.GetFullPath (AppDomain.CurrentDomain.BaseDirectory));
     
     var fileSystem = new FileSystem ();
     var environment = new CakeEnvironment (new CakePlatform (), new CakeRuntime ());
     var globber = new Globber (fileSystem, environment);
     log = new FakeLog ();
     var args = new FakeCakeArguments ();
     var processRunner = new ProcessRunner (environment, log);
     var registry = new WindowsRegistry ();
     var toolRepo = new ToolRepository (environment);
     var config = new Core.Configuration.CakeConfigurationProvider (fileSystem, environment).CreateConfiguration (testsDir, new Dictionary<string, string> ());
     var toolResolutionStrategy = new ToolResolutionStrategy (fileSystem, environment, globber, config);
     var toolLocator = new ToolLocator (environment, toolRepo, toolResolutionStrategy);
     context = new CakeContext (fileSystem, environment, globber, log, args, processRunner, registry, toolLocator);
     context.Environment.WorkingDirectory = testsDir;
 }
        public FakeCakeContext()
        {
            testsDir = new DirectoryPath(System.IO.Path.Combine(System.IO.Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "..", "..", ".."));

            log = new FakeCakeLog();
            var fileSystem             = new FileSystem();
            var environment            = new CakeEnvironment(new CakePlatform(), new CakeRuntime(), log);
            var globber                = new Globber(fileSystem, environment);
            var args                   = new FakeCakeArguments();
            var processRunner          = new ProcessRunner(environment, log);
            var registry               = new WindowsRegistry();
            var toolRepo               = new ToolRepository(environment);
            var config                 = new Core.Configuration.CakeConfigurationProvider(fileSystem, environment).CreateConfiguration(testsDir, new Dictionary <string, string>());
            var toolResolutionStrategy = new ToolResolutionStrategy(fileSystem, environment, globber, config);
            var toolLocator            = new ToolLocator(environment, toolRepo, toolResolutionStrategy);

            context = new CakeContext(fileSystem, environment, globber, log, args, processRunner, registry, toolLocator);
            context.Environment.WorkingDirectory = testsDir;
        }
Exemple #11
0
        protected void btnAssignTool_Click(object sender, EventArgs e)
        {
            int toolInvId = Session["ToolInvId"].ToInt32(0);

            int assemblyTypeId    = cmbAssemblyTypes.Value.ToInt32(0);
            int prodLineId        = cmbProductionLines.Value.ToInt32(0);
            int assemblySectionId = cmbAssemblySections.Value.ToInt32(0);
            int stationId         = cmbStations.Value.ToInt32(0);

            if (prodLineId == 0 || assemblySectionId == 0 || stationId == 0)
            {
                return;
            }
            decimal setNm = txtSetNM.Text.Trim().ToDecimal(0);

            string modelIdList = "";

            for (int i = 0; i < chkGWISTypes.SelectedValues.Count; i++)
            {
                if (modelIdList.Length == 0)
                {
                    modelIdList = chkGWISTypes.SelectedValues[i].ToString();
                }
                else
                {
                    modelIdList = String.Format("{0},{1}", modelIdList, chkGWISTypes.SelectedValues[i].ToString());
                }
            }

            bool status = ToolRepository.AssignToolStation(assemblyTypeId, prodLineId, assemblySectionId, stationId, setNm, toolInvId, User.UserName);

            if (status)
            {
                status = ToolRepository.AssignToolModels(assemblyTypeId, modelIdList, toolInvId, User.UserName);
            }

            if (status)
            {
                popupToolAssign.ShowOnPageLoad = false;
            }

            masterGrid.DataBind();
        }
Exemple #12
0
        public FakeCakeContext ()
        {
            testsDir = new DirectoryPath (
                System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ().Location));

            var fileSystem = new FileSystem ();
            var environment = new CakeEnvironment ();
            var globber = new Globber (fileSystem, environment);
            log = new FakeLog ();
            var args = new FakeCakeArguments ();
            var processRunner = new ProcessRunner (environment, log);
            var registry = new WindowsRegistry ();
            var toolRepo = new ToolRepository (environment);
            var config = new Core.Configuration.CakeConfigurationProvider (fileSystem, environment).CreateConfiguration (new Dictionary<string, string> ());
            var toolResStrat = new ToolResolutionStrategy (fileSystem, environment, globber, config);
            var toolLocator = new ToolLocator (environment, toolRepo, toolResStrat);

            context = new CakeContext (fileSystem, environment, globber, log, args, processRunner, registry, toolLocator);
            context.Environment.WorkingDirectory = testsDir;
        }
        /// <summary>
        ///     Injection constructor.
        /// </summary>
        /// <param name="loaderContext">The injected loader context for DataLoader.</param>
        /// <param name="tools">The injected repository for tools for lookup of store tools.</param>
        public StoreType(IDataLoaderContextAccessor loaderContext, ToolRepository tools)
        {
            _tools = tools;

            Field(s => s.Id);
            Field(s => s.Name);
            Field(s => s.PhoneNumber);

            // Now we want the tools; this is how we wire up the DataLoader.
            Field <ListGraphType <ToolType> >("tools", resolve: context =>
            {
                // Absolutely no idea what the string name is for.
                IDataLoader <Guid, IEnumerable <ToolV> > loader =
                    loaderContext.Context.GetOrAddCollectionBatchLoader <Guid, ToolV>(
                        "GetToolsByStoreId",
                        GetToolsByStoreIdAsync);

                return(loader.LoadAsync(context.Source.Id));
            });
        }
Exemple #14
0
        public FakeCakeContext()
        {
            testsDir = new DirectoryPath(
                System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));

            var fileSystem  = new FileSystem();
            var environment = new FakeEnvironment(PlatformFamily.OSX);
            var globber     = new Globber(fileSystem, environment);

            log = new FakeLog();
            var args                   = new FakeCakeArguments();
            var processRunner          = new ProcessRunner(environment, log);
            var registry               = new WindowsRegistry();
            var toolRepo               = new ToolRepository(environment);
            var config                 = new Core.Configuration.CakeConfigurationProvider(fileSystem, environment).CreateConfiguration(testsDir, new Dictionary <string, string>());
            var toolResolutionStrategy = new ToolResolutionStrategy(fileSystem, environment, globber, config);
            var toolLocator            = new ToolLocator(environment, toolRepo, toolResolutionStrategy);

            context = new CakeContext(fileSystem, environment, globber, log, args, processRunner, registry, toolLocator);
            context.Environment.WorkingDirectory = testsDir;
        }
Exemple #15
0
        /// <summary>
        /// Runs the application.
        /// </summary>
        /// <param name="args">Arguments.</param>
        /// <param name="appRoot">Application root folder</param>
        /// <returns>The result of the run.</returns>
        public async Task <RunResult> RunAsync(IEnumerable <string> args, string appRoot = null)
        {
            var console = new CakeConsole();
            var logger  = new SafeCakeLog(console);
            ICakeDataService dataService = new CodeCakeDataService();
            var engine = new CakeEngine(dataService, logger);

            ICakePlatform          platform    = new CakePlatform();
            ICakeRuntime           runtime     = new CakeRuntime();
            IFileSystem            fileSystem  = new FileSystem();
            MutableCakeEnvironment environment = new MutableCakeEnvironment(platform, runtime, appRoot);

            console.SupportAnsiEscapeCodes = AnsiDetector.SupportsAnsi(environment);

            IGlobber globber = new Globber(fileSystem, environment);

            IRegistry windowsRegistry = new WindowsRegistry();
            // Parse options.
            var         argumentParser = new ArgumentParser(logger, fileSystem);
            CakeOptions options        = argumentParser.Parse(args);

            Debug.Assert(options != null);
            CakeConfigurationProvider configProvider = new CakeConfigurationProvider(fileSystem, environment);
            ICakeConfiguration        configuration  = configProvider.CreateConfiguration(environment.ApplicationRoot, options.Arguments);
            IToolRepository           toolRepo       = new ToolRepository(environment);
            IToolResolutionStrategy   toolStrategy   = new ToolResolutionStrategy(fileSystem, environment, globber, configuration, logger);
            IToolLocator   locator       = new ToolLocator(environment, toolRepo, toolStrategy);
            IToolLocator   toolLocator   = new ToolLocator(environment, toolRepo, toolStrategy);
            IProcessRunner processRunner = new ProcessRunner(fileSystem, environment, logger, toolLocator, configuration);

            logger.SetVerbosity(options.Verbosity);
            ICakeArguments arguments = new CakeArguments(options.Arguments);
            var            context   = new CakeContext(
                fileSystem,
                environment,
                globber,
                logger,
                arguments,
                processRunner,
                windowsRegistry,
                locator,
                dataService,
                configuration);

            CodeCakeBuildTypeDescriptor choosenBuild;

            if (!AvailableBuilds.TryGetValue(options.Script, out choosenBuild))
            {
                logger.Error("Build script '{0}' not found.", options.Script);
                return(new RunResult(-1, context.InteractiveMode()));
            }

            // Set the working directory: the solution directory.
            logger.Information($"Working in Solution directory: '{_solutionDirectory}'.");
            environment.WorkingDirectory = new DirectoryPath(_solutionDirectory);

            try
            {
                SetEnvironmentVariablesFromCodeCakeBuilderKeyVault(logger, context);

                // Instantiates the script object.
                CodeCakeHost._injectedActualHost = new BuildScriptHost(engine, context);
                CodeCakeHost c = (CodeCakeHost)Activator.CreateInstance(choosenBuild.Type);


                var target                  = context.Arguments.GetArgument("target") ?? "Default";
                var execSettings            = new ExecutionSettings().SetTarget(target);
                var exclusiveTargetOptional = context.Arguments.HasArgument("exclusiveOptional");
                var exclusiveTarget         = exclusiveTargetOptional | context.Arguments.HasArgument("exclusive");
                var strategy                = new CodeCakeExecutionStrategy(logger, exclusiveTarget ? target : null);
                if (exclusiveTargetOptional && !engine.Tasks.Any(t => t.Name == target))
                {
                    logger.Warning($"No task '{target}' defined. Since -exclusiveOptional is specified, nothing is done.");
                    return(new RunResult(0, context.InteractiveMode()));
                }
                var report = await engine.RunTargetAsync(context, strategy, execSettings);

                if (report != null && !report.IsEmpty)
                {
                    var printerReport = new CakeReportPrinter(console);
                    printerReport.Write(report);
                }
            }
            catch (CakeTerminateException ex)
            {
                switch (ex.Option)
                {
                case CakeTerminationOption.Error:
                    logger.Error("Termination with Error: '{0}'.", ex.Message);
                    return(new RunResult(-2, context.InteractiveMode()));

                case CakeTerminationOption.Warning:
                    logger.Warning("Termination with Warning: '{0}'.", ex.Message);
                    break;

                default:
                    Debug.Assert(ex.Option == CakeTerminationOption.Success);
                    logger.Information("Termination with Success: '{0}'.", ex.Message);
                    break;
                }
            }
            catch (TargetInvocationException ex)
            {
                logger.Error("Error occurred: '{0}'.", ex.InnerException?.Message ?? ex.Message);
                return(new RunResult(-3, context.InteractiveMode()));
            }
            catch (AggregateException ex)
            {
                logger.Error("Error occurred: '{0}'.", ex.Message);
                foreach (var e in ex.InnerExceptions)
                {
                    logger.Error("  -> '{0}'.", e.Message);
                }
                return(new RunResult(-4, context.InteractiveMode()));
            }
            catch (Exception ex)
            {
                logger.Error("Error occurred: '{0}'.", ex.Message);
                return(new RunResult(-5, context.InteractiveMode()));
            }
            return(new RunResult(0, context.InteractiveMode()));
        }
        /// <summary>
        /// Runs the application.
        /// </summary>
        /// <param name="args">Arguments.</param>
        /// <returns>0 on success.</returns>
        public int Run( string[] args )
        {
            var console = new CakeConsole();
            var logger = new SafeCakeLog( console );
            var engine = new CakeEngine( logger );

            ICakePlatform platform = new CakePlatform();
            ICakeRuntime runtime = new CakeRuntime();
            IFileSystem fileSystem = new FileSystem();
            MutableCakeEnvironment environment = new MutableCakeEnvironment( platform, runtime );
            IGlobber globber = new Globber( fileSystem, environment );
            environment.Initialize( globber );
            IProcessRunner processRunner = new ProcessRunner( environment, logger );
            IRegistry windowsRegistry = new WindowsRegistry();
            // Parse options.
            var argumentParser = new ArgumentParser( logger, fileSystem );
            CakeOptions options = argumentParser.Parse( args );
            Debug.Assert( options != null );
            CakeConfigurationProvider configProvider = new CakeConfigurationProvider( fileSystem, environment );
            ICakeConfiguration configuration = configProvider.CreateConfiguration( environment.ApplicationRoot, options.Arguments );
            IToolRepository toolRepo = new ToolRepository( environment );
            IToolResolutionStrategy toolStrategy = new ToolResolutionStrategy( fileSystem, environment, globber, configuration );
            IToolLocator locator = new ToolLocator( environment, toolRepo, toolStrategy );
            IToolLocator toolLocator = new ToolLocator( environment, toolRepo, toolStrategy  );
            logger.SetVerbosity( options.Verbosity );
            CodeCakeBuildTypeDescriptor choosenBuild;
            if( !AvailableBuilds.TryGetValue( options.Script, out choosenBuild ) )
            {
                logger.Error( "Build script '{0}' not found.", options.Script );
                return -1;
            }

            ICakeArguments arguments = new CakeArguments(options.Arguments);

            var context = new CakeContext( fileSystem, environment, globber, logger, arguments, processRunner, windowsRegistry, locator );

            // Copy the arguments from the options.

            // Set the working directory: the solution directory.
            environment.WorkingDirectory = new DirectoryPath( _solutionDirectory );

            // Adds additional paths from chosen build.
            foreach( var p in choosenBuild.AdditionnalPatternPaths )
            {
                environment.AddPath( p );
            }
            logger.Information( "Path(s) added: " + string.Join( ", ", environment.EnvironmentAddedPaths ) );
            logger.Information( "Dynamic pattern path(s) added: " + string.Join( ", ", environment.EnvironmentDynamicPaths ) );

            try
            {
                // Instanciates the script object.
                CodeCakeHost._injectedActualHost = new BuildScriptHost( engine, context );
                CodeCakeHost c = (CodeCakeHost)Activator.CreateInstance( choosenBuild.Type );

                var strategy = new DefaultExecutionStrategy( logger );
                var report = engine.RunTarget( context, strategy, context.Arguments.GetArgument( "target" ) ?? "Default" );
                if( report != null && !report.IsEmpty )
                {
                    var printerReport = new CakeReportPrinter( console );
                    printerReport.Write( report );
                }
            }
            catch( CakeTerminateException ex )
            {
                switch( ex.Option )
                {
                    case CakeTerminationOption.Error:
                        logger.Error( "Termination with Error: '{0}'.", ex.Message );
                        return -1;
                    case CakeTerminationOption.Warning:
                        logger.Warning( "Termination with Warning: '{0}'.", ex.Message );
                        break;
                    default:
                        Debug.Assert( ex.Option == CakeTerminationOption.Success );
                        logger.Information( "Termination with Success: '{0}'.", ex.Message );
                        break;
                }
            }
            catch( TargetInvocationException ex )
            {
                logger.Error( "Error occurred: '{0}'.", ex.InnerException?.Message ?? ex.Message );
                return -1;
            }
            catch( Exception ex )
            {
                logger.Error( "Error occurred: '{0}'.", ex.Message );
                return -1;
            }
            return 0;
        }
 public ToolController()
 {
     this.toolRepository2 = new ToolRepository();
 }
Exemple #18
0
 public TblToolsController(ProjectMobileContext context)
 {
     _context  = context;
     _toolRepo = new ToolRepository(_context);
 }
        /// <summary>
        /// Runs the application.
        /// </summary>
        /// <param name="args">Arguments.</param>
        /// <param name="appRoot">Application root folder</param>
        /// <returns>0 on success.</returns>
        public int Run(string[] args, string appRoot = null)
        {
            var console = new CakeConsole();
            var logger  = new SafeCakeLog(console);
            var engine  = new CakeEngine(logger);

            ICakePlatform          platform    = new CakePlatform();
            ICakeRuntime           runtime     = new CakeRuntime();
            IFileSystem            fileSystem  = new FileSystem();
            MutableCakeEnvironment environment = new MutableCakeEnvironment(platform, runtime, appRoot);
            IGlobber globber = new Globber(fileSystem, environment);

            environment.Initialize(globber);
            IProcessRunner processRunner   = new ProcessRunner(environment, logger);
            IRegistry      windowsRegistry = new WindowsRegistry();
            // Parse options.
            var         argumentParser = new ArgumentParser(logger, fileSystem);
            CakeOptions options        = argumentParser.Parse(args);

            Debug.Assert(options != null);
            CakeConfigurationProvider configProvider = new CakeConfigurationProvider(fileSystem, environment);
            ICakeConfiguration        configuration  = configProvider.CreateConfiguration(environment.ApplicationRoot, options.Arguments);
            IToolRepository           toolRepo       = new ToolRepository(environment);
            IToolResolutionStrategy   toolStrategy   = new ToolResolutionStrategy(fileSystem, environment, globber, configuration);
            IToolLocator locator     = new ToolLocator(environment, toolRepo, toolStrategy);
            IToolLocator toolLocator = new ToolLocator(environment, toolRepo, toolStrategy);

            logger.SetVerbosity(options.Verbosity);
            CodeCakeBuildTypeDescriptor choosenBuild;

            if (!AvailableBuilds.TryGetValue(options.Script, out choosenBuild))
            {
                logger.Error("Build script '{0}' not found.", options.Script);
                return(-1);
            }

            ICakeArguments arguments = new CakeArguments(options.Arguments);

            var context = new CakeContext(fileSystem, environment, globber, logger, arguments, processRunner, windowsRegistry, locator);

            // Copy the arguments from the options.

            // Set the working directory: the solution directory.
            environment.WorkingDirectory = new DirectoryPath(_solutionDirectory);

            // Adds additional paths from chosen build.
            foreach (var p in choosenBuild.AdditionnalPatternPaths)
            {
                environment.AddPath(p);
            }
            logger.Information("Path(s) added: " + string.Join(", ", environment.EnvironmentAddedPaths));
            logger.Information("Dynamic pattern path(s) added: " + string.Join(", ", environment.EnvironmentDynamicPaths));

            try
            {
                // Instanciates the script object.
                CodeCakeHost._injectedActualHost = new BuildScriptHost(engine, context);
                CodeCakeHost c = (CodeCakeHost)Activator.CreateInstance(choosenBuild.Type);

                var strategy = new DefaultExecutionStrategy(logger);
                var report   = engine.RunTargetAsync(context, strategy, context.Arguments.GetArgument("target") ?? "Default").GetAwaiter().GetResult();
                if (report != null && !report.IsEmpty)
                {
                    var printerReport = new CakeReportPrinter(console);
                    printerReport.Write(report);
                }
            }
            catch (CakeTerminateException ex)
            {
                switch (ex.Option)
                {
                case CakeTerminationOption.Error:
                    logger.Error("Termination with Error: '{0}'.", ex.Message);
                    return(-1);

                case CakeTerminationOption.Warning:
                    logger.Warning("Termination with Warning: '{0}'.", ex.Message);
                    break;

                default:
                    Debug.Assert(ex.Option == CakeTerminationOption.Success);
                    logger.Information("Termination with Success: '{0}'.", ex.Message);
                    break;
                }
            }
            catch (TargetInvocationException ex)
            {
                logger.Error("Error occurred: '{0}'.", ex.InnerException?.Message ?? ex.Message);
                return(-1);
            }
            catch (Exception ex)
            {
                logger.Error("Error occurred: '{0}'.", ex.Message);
                return(-1);
            }
            return(0);
        }