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); } }
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); } }