Cli( final Long streamedQueryRowLimit, final Long streamedQueryTimeoutMs, final KsqlRestClient restClient, final Console terminal ) { Objects.requireNonNull(restClient, "Must provide the CLI with a REST client"); Objects.requireNonNull(terminal, "Must provide the CLI with a terminal"); this.streamedQueryRowLimit = streamedQueryRowLimit; this.streamedQueryTimeoutMs = streamedQueryTimeoutMs; this.restClient = restClient; this.terminal = terminal; this.queryStreamExecutorService = Executors.newSingleThreadExecutor(); final Supplier<String> versionSuppler = () -> restClient.getServerInfo().getResponse().getVersion(); CliCommandRegisterUtil.registerDefaultCommands(this, terminal, versionSuppler, restClient); }
private void displayWelcomeMessage() { String serverVersion; try { serverVersion = restClient.getServerInfo().getResponse().getVersion(); } catch (final Exception exception) { serverVersion = "<unknown>"; } final String cliVersion = Version.getVersion(); final String helpReminderMessage = "Having trouble? " + "Type 'help' (case-insensitive) for a rundown of how things work!"; final PrintWriter writer = terminal.writer(); // Want to center the logo, but in the case of something like a fullscreen terminal, just // centering around the help message (longest single line of text in the welcome message) // should be enough; looks a little weird if you try to center the logo on a wide enough // screen and it just kind of ends up out in the middle of nowhere; hence, the call to // Math.min(terminal.getWidth(), helpReminderMessage.length()) final int consoleWidth = Math.min(terminal.getWidth(), helpReminderMessage.length()); WelcomeMsgUtils.displayWelcomeMessage(consoleWidth, writer); writer.printf( "CLI v%s, Server v%s located at %s%n", cliVersion, serverVersion, restClient.getServerAddress() ); writer.println(); writer.println(helpReminderMessage); writer.println(); terminal.flush(); }