netudima commented on code in PR #2497: URL: https://github.com/apache/cassandra/pull/2497#discussion_r2094153036
########## src/java/org/apache/cassandra/tools/NodeTool.java: ########## @@ -339,6 +144,62 @@ private static void printHistory(String... args) } } + + public static List<String> getCommandsWithoutRoot(String separator) + { + List<String> commands = new ArrayList<>(); + try + { + getCommandsWithoutRoot(createCommandLine(new CassandraCliFactory(new NodeProbeFactory(), Output.CONSOLE)), commands, separator); + return commands; + } + catch (Exception e) + { + throw new RuntimeException("Failed to initialize command line hierarchy", e); + } + } + + private static void getCommandsWithoutRoot(CommandLine cli, List<String> commands, String separator) + { + String name = cli.getCommandSpec().qualifiedName(separator); + // Skip the root command as it's not a real command. + if (cli.getCommandSpec().root() != cli.getCommandSpec()) + commands.add(name.replace(cli.getCommandSpec().root().qualifiedName() + separator, "")); + for (CommandLine sub : cli.getSubcommands().values()) + getCommandsWithoutRoot(sub, commands, separator); + } + + public static CommandLine createCommandLine(CommandLine.IFactory factory) throws Exception + { + return new CommandLine(new TopLevelCommand(), factory) + .addMixin(JmxConnect.MIXIN_KEY, factory.create(JmxConnect.class)); + } + + private static void configureCliLayout(CommandLine commandLine) + { + CliLayout defaultLayout = CliLayout.valueOf(toUpperCaseLocalized(CassandraRelevantProperties.CASSANDRA_CLI_LAYOUT.getDefaultValue())); + CliLayout layoutEnv = CassandraRelevantEnv.CASSANDRA_CLI_LAYOUT.getEnum(true, CliLayout.class, + CassandraRelevantProperties.CASSANDRA_CLI_LAYOUT.getDefaultValue()); + CliLayout layoutSysEnv = CassandraRelevantProperties.CASSANDRA_CLI_LAYOUT.getEnum(true, CliLayout.class); Review Comment: would it be better to name it just as LayoutSys can the logic in this method be expressed simpler, like: if env layout is non-default - use it otherwise take sys layout? if I've got the priorities correct.. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For additional commands, e-mail: pr-h...@cassandra.apache.org