Beispiel #1
0
        public static async Task <PipelineResult <Wrapper <int> > > ConsumePipelineBuilder(PipelineBuilder <string[], Wrapper <int> > builder, Logger logger, string[] origin)
        {
            Pipeline <string[], Wrapper <int> > pipeline = await builder
                                                           .ConfigureLogger(logger)
                                                           .Build(origin, logger);

            return(await pipeline.Consume());
        }
Beispiel #2
0
        public static async Task <int> Main(string[] args)
        {
            Console.InputEncoding  = Encoding.UTF8;
            Console.OutputEncoding = Encoding.UTF8;

            ILogger             logger     = new Logger();
            ExtensionCollection extensions = new ExtensionCollection();
            {
                extensions.Load(new ExtensionLoader(typeof(Extensions.Builtin.Console.ConsoleExtension).Assembly));
                extensions.Load(new ExtensionLoader(typeof(Extensions.Builtin.Workspace.WorkspaceExtension).Assembly));
            }

            PipelineBuilder <string[], Wrapper <int> > builder = new PipelineBuilder <string[], Wrapper <int> >();

            _ = builder.ConfigureLogger(logger)
                .ConfigureExtensions(extensions)
                .ConfigureHost(new ExtensionHost())
                .ConfigureCliCommand();

            if (Environment == EnvironmentType.Test)
            {
                if (TestView.Input == null)
                {
                    throw new NullReferenceException(nameof(TestView.Input));
                }

                _ = builder.ConfigureConsole(new TestTerminal(), TestView.Input);
            }
            else
            {
                _ = builder.ConfigureConsole(new SystemConsole(), Console.In);
            }

            _ = builder.UseCommandsService().UseReplCommandService();

            _ = builder.UseCliCommand();

            if (Environment == EnvironmentType.Test)
            {
                _ = builder.UseTestView();
            }

            _ = builder.UseReplCommand();

            Pipeline <string[], Wrapper <int> > pipeline = await builder.Build(args, logger);

            PipelineResult <Wrapper <int> > result = await pipeline.Consume();

            if (result.IsOk)
            {
                return(result.Result !);
            }
            else
            {
                Console.Error.WriteLine(result.Exception !.ToString());
                return(-1);
            }
        }
Beispiel #3
0
        public static async Task <int> Main(string[] args)
        {
            Console.InputEncoding  = Encoding.UTF8;
            Console.OutputEncoding = Encoding.UTF8;
            string oldCurDir = System.Environment.CurrentDirectory;

            while (true)
            {
                System.Environment.CurrentDirectory = oldCurDir;

                ILogger logger = new Logger();

                ExtensionHost host = new ExtensionHost();

                PipelineBuilder <string[], Wrapper <int> > builder = new PipelineBuilder <string[], Wrapper <int> >();

                _ = builder.ConfigureLogger(logger)
                    .ConfigureHost(host)
                    .ConfigureCliCommand();

                if (Environment == EnvironmentType.Test)
                {
                    if (TestView.Input == null)
                    {
                        throw new NullReferenceException(nameof(TestView.Input));
                    }

                    _ = builder.ConfigureConsole(new TestTerminal(), TestView.Input);
                }
                else
                {
                    _ = builder.ConfigureConsole(new SystemConsole(), Console.In);
                }

                _ = builder.UseCliCommand()
                    .UseExtensionsLoading()
                    .UseReplCommandService()
                    .UseInitialWorkspace();

                if (Environment == EnvironmentType.Test)
                {
                    _ = builder.UseTestView();
                }

                _ = builder.UseReplCommand();

                Pipeline <string[], Wrapper <int> > pipeline = await builder.Build(args, logger);

                PipelineResult <Wrapper <int> > result = await pipeline.Consume();

                if (result.IsError)
                {
                    Console.Error.WriteLine(result.Exception !.ToString());
                }

                if (host.RequestRestart)
                {
                    continue;
                }

                return(result.IsOk ? (int)result.Result ! : -1);
            }
        }