public static async Task HandlerAsync(InvocationContext invocationContext, Uri server, string connectionString, CancellationToken cancellationToken = default) { var region = new Region( 0, 0, Console.WindowWidth, Console.WindowHeight, true); List <CurrentVersion> currentVersions = null; ISchemaClient schemaClient = new SchemaClient(server); try { // Base schema is required to run the schema migration tool. // This method also initializes the database if not initialized yet. await BaseSchemaRunner.EnsureBaseSchemaExistsAsync(connectionString, cancellationToken); // If InstanceSchema table is just created(as part of baseSchema), it takes a while to insert a version record // since the Schema job polls and upserts at the specified interval in the service. await BaseSchemaRunner.EnsureInstanceSchemaRecordExistsAsync(connectionString, cancellationToken); currentVersions = await schemaClient.GetCurrentVersionInformationAsync(cancellationToken); } catch (SchemaManagerException ex) { CommandUtils.PrintError(ex.Message); return; } catch (HttpRequestException) { CommandUtils.PrintError(string.Format(Resources.RequestFailedMessage, server)); return; } var tableView = new TableView <CurrentVersion> { Items = currentVersions, }; tableView.AddColumn( cellValue: currentVersion => currentVersion.Id, header: new ContentView("Version")); tableView.AddColumn( cellValue: currentVersion => currentVersion.Status, header: new ContentView("Status")); tableView.AddColumn( cellValue: currentVersion => string.Join(", ", currentVersion.Servers), header: new ContentView("Servers")); var consoleRenderer = new ConsoleRenderer( invocationContext.Console, mode: invocationContext.BindingContext.OutputMode(), resetAfterRender: true); using (var screen = new ScreenView(renderer: consoleRenderer)) { screen.Child = tableView; screen.Render(region); } }