diff --git a/LICENSE-binary b/LICENSE-binary index 58f8cf4e28c0b..69bb03b8710b3 100644 --- a/LICENSE-binary +++ b/LICENSE-binary @@ -292,7 +292,7 @@ see: licenses/CDDL+GPL-1.1 --------------------------------------- MIT License -- argparse4j-0.7.0, see: licenses/argparse-MIT +- argparse4j-0.9.0, see: licenses/argparse-MIT - classgraph-4.8.179, see: licenses/classgraph-MIT - jopt-simple-5.0.4, see: licenses/jopt-simple-MIT - slf4j-api-1.7.36, see: licenses/slf4j-MIT diff --git a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java index 947c3a36fb575..07d4d0417b20d 100644 --- a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java +++ b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java @@ -327,7 +327,7 @@ public void taskConfigs(SourceAndTarget sourceAndTarget, String connector, Callb } public static void main(String[] args) { - ArgumentParser parser = ArgumentParsers.newArgumentParser("connect-mirror-maker"); + ArgumentParser parser = ArgumentParsers.newFor("connect-mirror-maker").build(); parser.description("MirrorMaker 2.0 driver"); parser.addArgument("config").type(Arguments.fileType().verifyCanRead()) .metavar("mm2.properties").required(true) diff --git a/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala b/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala index 8d6049e1393e4..90693845ed3f8 100644 --- a/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala +++ b/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala @@ -77,7 +77,11 @@ object KafkaDockerWrapper extends Logging { private def parseArguments(args: Array[String]): Namespace = { val parser = ArgumentParsers. - newArgumentParser("kafka-docker-wrapper", true, "-", "@"). + newFor("kafka-docker-wrapper"). + addHelp(true). + prefixChars("-"). + fromFilePrefix("@"). + build(). description("The Kafka docker wrapper.") val subparsers = parser.addSubparsers().dest("command") diff --git a/core/src/main/scala/kafka/tools/StorageTool.scala b/core/src/main/scala/kafka/tools/StorageTool.scala index 23df78805e40c..6556158eeb757 100644 --- a/core/src/main/scala/kafka/tools/StorageTool.scala +++ b/core/src/main/scala/kafka/tools/StorageTool.scala @@ -24,7 +24,7 @@ import kafka.utils.Logging import net.sourceforge.argparse4j.ArgumentParsers import net.sourceforge.argparse4j.impl.Arguments.{append, store, storeTrue} import net.sourceforge.argparse4j.inf.{ArgumentParserException, Namespace, Subparser, Subparsers} -import net.sourceforge.argparse4j.internal.HelpScreenException +import net.sourceforge.argparse4j.helper.HelpScreenException import org.apache.kafka.common.Uuid import org.apache.kafka.common.utils.Utils import org.apache.kafka.common.utils.internals.Exit @@ -291,7 +291,11 @@ object StorageTool extends Logging { def parseArguments(args: Array[String]): Namespace = { val parser = ArgumentParsers - .newArgumentParser("kafka-storage", /* defaultHelp */true, /* prefixChars */"-", /* fromFilePrefix */ "@") + .newFor("kafka-storage") + .addHelp(true) + .prefixChars("-") + .fromFilePrefix("@") + .build() .description("The Kafka storage tool.") val subparsers = parser.addSubparsers().dest("command") diff --git a/generator/src/main/java/org/apache/kafka/message/MessageGenerator.java b/generator/src/main/java/org/apache/kafka/message/MessageGenerator.java index f09baf230ab8a..5ba7b0c513591 100644 --- a/generator/src/main/java/org/apache/kafka/message/MessageGenerator.java +++ b/generator/src/main/java/org/apache/kafka/message/MessageGenerator.java @@ -369,7 +369,8 @@ static int sizeOfUnsignedVarint(int value) { public static void main(String[] args) throws Exception { ArgumentParser parser = ArgumentParsers - .newArgumentParser("message-generator") + .newFor("message-generator") + .build() .defaultHelp(true) .description("The Kafka message generator"); parser.addArgument("--package", "-p") diff --git a/generator/src/main/java/org/apache/kafka/message/checker/MetadataSchemaCheckerTool.java b/generator/src/main/java/org/apache/kafka/message/checker/MetadataSchemaCheckerTool.java index a1132da68c33b..66956cecbcd48 100644 --- a/generator/src/main/java/org/apache/kafka/message/checker/MetadataSchemaCheckerTool.java +++ b/generator/src/main/java/org/apache/kafka/message/checker/MetadataSchemaCheckerTool.java @@ -18,11 +18,11 @@ package org.apache.kafka.message.checker; import net.sourceforge.argparse4j.ArgumentParsers; +import net.sourceforge.argparse4j.helper.HelpScreenException; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; import net.sourceforge.argparse4j.inf.Subparsers; -import net.sourceforge.argparse4j.internal.HelpScreenException; import java.io.PrintStream; @@ -41,7 +41,8 @@ public static void run( PrintStream writer ) throws Exception { ArgumentParser argumentParser = ArgumentParsers. - newArgumentParser("metadata-schema-checker"). + newFor("metadata-schema-checker"). + build(). defaultHelp(true). description("The Kafka metadata schema checker tool."); Subparsers subparsers = argumentParser.addSubparsers().dest("command"); diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index e43642c305589..48db914a33963 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -52,7 +52,7 @@ versions += [ activation: "1.1.1", apacheda: "1.0.2", apacheds: "2.0.0-M24", - argparse4j: "0.7.0", + argparse4j: "0.9.0", bcpkix: "1.85", caffeine: "3.2.0", checkstyle: project.hasProperty('checkstyleVersion') ? checkstyleVersion : "12.3.1", diff --git a/shell/src/main/java/org/apache/kafka/shell/MetadataShell.java b/shell/src/main/java/org/apache/kafka/shell/MetadataShell.java index 4619fbb43d3a4..775250d9334c6 100644 --- a/shell/src/main/java/org/apache/kafka/shell/MetadataShell.java +++ b/shell/src/main/java/org/apache/kafka/shell/MetadataShell.java @@ -201,7 +201,8 @@ public void close() { public static void main(String[] args) { ArgumentParser parser = ArgumentParsers - .newArgumentParser("kafka-metadata-shell") + .newFor("kafka-metadata-shell") + .build() .defaultHelp(true) .description("The Apache Kafka metadata shell"); parser.addArgument("--snapshot", "-s") diff --git a/shell/src/main/java/org/apache/kafka/shell/command/Commands.java b/shell/src/main/java/org/apache/kafka/shell/command/Commands.java index fdf469d880d9c..132f3ea83e2d8 100644 --- a/shell/src/main/java/org/apache/kafka/shell/command/Commands.java +++ b/shell/src/main/java/org/apache/kafka/shell/command/Commands.java @@ -21,12 +21,12 @@ import org.apache.kafka.shell.state.MetadataShellState; import net.sourceforge.argparse4j.ArgumentParsers; +import net.sourceforge.argparse4j.helper.HelpScreenException; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; import net.sourceforge.argparse4j.inf.Subparsers; -import net.sourceforge.argparse4j.internal.HelpScreenException; import org.jline.reader.Candidate; @@ -104,7 +104,7 @@ void completeNext( * @param addShellCommands True if we should include the shell-only commands. */ public Commands(boolean addShellCommands) { - this.parser = ArgumentParsers.newArgumentParser("", false); + this.parser = ArgumentParsers.newFor("").addHelp(false).build(); Subparsers subparsers = this.parser.addSubparsers().dest("command"); for (Type type : TYPES.values()) { if (addShellCommands || !type.shellOnly()) { diff --git a/shell/src/main/java/org/apache/kafka/shell/command/ManCommandHandler.java b/shell/src/main/java/org/apache/kafka/shell/command/ManCommandHandler.java index 6915577b7433d..5b5eb68f65c85 100644 --- a/shell/src/main/java/org/apache/kafka/shell/command/ManCommandHandler.java +++ b/shell/src/main/java/org/apache/kafka/shell/command/ManCommandHandler.java @@ -96,7 +96,7 @@ public void run( writer.println("man: unknown command " + cmd + ". Type help to get a list of commands."); } else { - ArgumentParser parser = ArgumentParsers.newArgumentParser(type.name(), false); + ArgumentParser parser = ArgumentParsers.newFor(type.name()).addHelp(false).build(); type.addArguments(parser); writer.printf("%s: %s%n%n", cmd, type.description()); parser.printHelp(writer); diff --git a/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java b/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java index 71e180331aeb6..1d99af6c0679b 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java +++ b/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java @@ -108,7 +108,8 @@ static class TestConfig { public static void main(String[] args) throws Exception { ArgumentParser parser = ArgumentParsers - .newArgumentParser("client-compatibility-test") + .newFor("client-compatibility-test") + .build() .defaultHelp(true) .description("This tool is used to verify client compatibility guarantees."); parser.addArgument("--topic") diff --git a/tools/src/main/java/org/apache/kafka/tools/ClusterTool.java b/tools/src/main/java/org/apache/kafka/tools/ClusterTool.java index 4342bb07bf33a..55b1cbe7160b0 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ClusterTool.java +++ b/tools/src/main/java/org/apache/kafka/tools/ClusterTool.java @@ -70,7 +70,8 @@ static int mainNoExit(String... args) { static void execute(String... args) throws Exception { ArgumentParser parser = ArgumentParsers - .newArgumentParser("kafka-cluster") + .newFor("kafka-cluster") + .build() .defaultHelp(true) .description("The Kafka cluster tool."); Subparsers subparsers = parser.addSubparsers().dest("command"); diff --git a/tools/src/main/java/org/apache/kafka/tools/ConnectInternalTopics.java b/tools/src/main/java/org/apache/kafka/tools/ConnectInternalTopics.java index a7251aaa05bdf..3ba95abe29cc2 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ConnectInternalTopics.java +++ b/tools/src/main/java/org/apache/kafka/tools/ConnectInternalTopics.java @@ -154,7 +154,7 @@ private static Map parseWorkerProperties(ArgumentParser parser, } private static ArgumentParser parser() { - var parser = ArgumentParsers.newArgumentParser("connect-internal-topics") + var parser = ArgumentParsers.newFor("connect-internal-topics").build() .defaultHelp(true) .description("Manage internal topics required by Kafka Connect clusters (config, status, and offset topics)."); diff --git a/tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java b/tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java index 3b9414db601a0..1015387ef8e87 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java +++ b/tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java @@ -97,7 +97,7 @@ public static int mainNoExit(String[] args, PrintStream out, PrintStream err) { } private static ArgumentParser parser() { - ArgumentParser parser = ArgumentParsers.newArgumentParser("connect-plugin-path") + ArgumentParser parser = ArgumentParsers.newFor("connect-plugin-path").build() .defaultHelp(true) .description("Manage plugins on the Connect plugin.path"); diff --git a/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java b/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java index a9883b78b273a..ef3a8e42f8d11 100644 --- a/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java @@ -31,6 +31,7 @@ import org.apache.kafka.server.util.CommandLineUtils; import net.sourceforge.argparse4j.ArgumentParsers; +import net.sourceforge.argparse4j.helper.HelpScreenException; import net.sourceforge.argparse4j.impl.Arguments; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; @@ -38,7 +39,6 @@ import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; import net.sourceforge.argparse4j.inf.Subparsers; -import net.sourceforge.argparse4j.internal.HelpScreenException; import java.util.HashMap; import java.util.List; @@ -74,7 +74,8 @@ static int mainNoExit(String... args) { static void execute(String... args) throws Exception { ArgumentParser parser = ArgumentParsers - .newArgumentParser("kafka-features") + .newFor("kafka-features") + .build() .defaultHelp(true) .description("This tool manages feature flags in Kafka."); MutuallyExclusiveGroup bootstrapGroup = parser.addMutuallyExclusiveGroup(); diff --git a/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java b/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java index 6c747250bc6fe..dceab03c50c4f 100644 --- a/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java @@ -36,6 +36,7 @@ import org.apache.kafka.server.util.Csv; import net.sourceforge.argparse4j.ArgumentParsers; +import net.sourceforge.argparse4j.helper.HelpScreenException; import net.sourceforge.argparse4j.impl.Arguments; import net.sourceforge.argparse4j.inf.ArgumentGroup; import net.sourceforge.argparse4j.inf.ArgumentParser; @@ -44,7 +45,6 @@ import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; import net.sourceforge.argparse4j.inf.Subparsers; -import net.sourceforge.argparse4j.internal.HelpScreenException; import java.io.File; import java.io.IOException; @@ -97,7 +97,8 @@ static int mainNoExit(String... args) { static void execute(String... args) throws Exception { ArgumentParser parser = ArgumentParsers - .newArgumentParser("kafka-metadata-quorum") + .newFor("kafka-metadata-quorum") + .build() .defaultHelp(true) .description("This tool describes kraft metadata quorum status."); MutuallyExclusiveGroup connectionOptions = parser.addMutuallyExclusiveGroup().required(true); diff --git a/tools/src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java b/tools/src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java index 3babe5444bb12..0ba3615a514fe 100644 --- a/tools/src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java +++ b/tools/src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java @@ -216,7 +216,8 @@ private static class ArgsHandler { private ArgsHandler() { this.parser = ArgumentParsers - .newArgumentParser("oauth-compatibility-tool") + .newFor("oauth-compatibility-tool") + .build() .defaultHelp(true) .description(DESCRIPTION); } diff --git a/tools/src/main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java b/tools/src/main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java index 42fa3c47d87b7..8d023d2d77cbe 100644 --- a/tools/src/main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java +++ b/tools/src/main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java @@ -28,6 +28,7 @@ class PrintVersionAndExitAction implements ArgumentAction { @Override + @SuppressWarnings("deprecation") // Required by argparse4j until its legacy callback is removed. public void run( ArgumentParser parser, Argument arg, diff --git a/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java b/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java index 078c3c4ddecc3..434af84999a69 100644 --- a/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java +++ b/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java @@ -253,7 +253,8 @@ static List readPayloadFile(String payloadFilePath, String payloadDelimi /** Get the command-line argument parser. */ static ArgumentParser argParser() { ArgumentParser parser = ArgumentParsers - .newArgumentParser("kafka-producer-perf-test") + .newFor("kafka-producer-perf-test") + .build() .defaultHelp(true) .description("This tool is used to verify the producer performance. To enable transactions, " + "you can specify a transactional id or set a transaction duration using --transaction-duration-ms. " + diff --git a/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java b/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java index 35a9a32fc47c6..6e5c857a36820 100644 --- a/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java +++ b/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java @@ -71,7 +71,8 @@ public class TransactionalMessageCopier { /** Get the command-line argument parser. */ private static ArgumentParser argParser() { ArgumentParser parser = ArgumentParsers - .newArgumentParser("transactional-message-copier") + .newFor("transactional-message-copier") + .build() .defaultHelp(true) .description("This tool copies messages transactionally from an input partition to an output topic, " + "committing the consumed offsets along with the output messages"); diff --git a/tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java b/tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java index 1655f7e4a384f..39c4bde76f98b 100644 --- a/tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java +++ b/tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java @@ -980,7 +980,7 @@ private static Admin buildAdminClient(Namespace ns) { static ArgumentParser buildBaseParser() { ArgumentParser parser = ArgumentParsers - .newArgumentParser("kafka-transactions.sh"); + .newFor("kafka-transactions.sh").build(); parser.description("This tool is used to analyze the transactional state of producers in the cluster. " + "It can be used to detect and recover from hanging transactions."); diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java index 242bd4992e1ac..94d869e468ee3 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java @@ -520,7 +520,8 @@ public long maxOffset() { private static ArgumentParser argParser() { ArgumentParser parser = ArgumentParsers - .newArgumentParser("verifiable-consumer") + .newFor("verifiable-consumer") + .build() .defaultHelp(true) .description("This tool consumes messages from a specific topic and emits consumer events (e.g. group rebalances, received messages, and offsets committed) as JSON objects to STDOUT."); MutuallyExclusiveGroup connectionGroup = parser.addMutuallyExclusiveGroup("Connection Group") diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java index db2d8817f50ce..5a926b64249c0 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java @@ -110,7 +110,8 @@ public VerifiableProducer(KafkaProducer producer, String topic, /** Get the command-line argument parser. */ private static ArgumentParser argParser() { ArgumentParser parser = ArgumentParsers - .newArgumentParser("verifiable-producer") + .newFor("verifiable-producer") + .build() .defaultHelp(true) .description("This tool produces increasing integers to the specified topic and prints JSON metadata to stdout on each \"send\" request, making externally visible which messages have been acked and which have not."); diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableShareConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableShareConsumer.java index da176c3a68967..af9a816d18728 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableShareConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableShareConsumer.java @@ -583,7 +583,8 @@ public String toString() { private static ArgumentParser argParser() { ArgumentParser parser = ArgumentParsers - .newArgumentParser("verifiable-share-consumer") + .newFor("verifiable-share-consumer") + .build() .defaultHelp(true) .description("This tool creates a share group and consumes messages from a specific topic and emits share consumer events (e.g. share consumer startup, received messages, and offsets acknowledged) as JSON objects to STDOUT."); MutuallyExclusiveGroup connectionGroup = parser.addMutuallyExclusiveGroup("Connection Group") diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java b/trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java index 3453fbf34691f..bb4fc19d01429 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java @@ -200,7 +200,8 @@ boolean exec(TaskSpec spec, PrintStream out) throws Exception { public static void main(String[] args) throws Exception { ArgumentParser parser = ArgumentParsers - .newArgumentParser("trogdor-agent") + .newFor("trogdor-agent") + .build() .defaultHelp(true) .description("The Trogdor fault injection agent"); parser.addArgument("--agent.config", "-c") diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java b/trogdor/src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java index 79612ee31f89c..ce5178ea1be49 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java @@ -199,7 +199,8 @@ private static void addWorkerIdArgument(ArgumentParser parser, String help) { public static void main(String[] args) throws Exception { ArgumentParser rootParser = ArgumentParsers - .newArgumentParser("trogdor-agent-client") + .newFor("trogdor-agent-client") + .build() .defaultHelp(true) .description("The Trogdor agent client."); Subparsers subParsers = rootParser.addSubparsers(). diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java b/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java index 2196b84e98b3f..337ea8f8e8156 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java @@ -129,7 +129,8 @@ public void waitForShutdown() throws Exception { public static void main(String[] args) throws Exception { ArgumentParser parser = ArgumentParsers - .newArgumentParser("trogdor-coordinator") + .newFor("trogdor-coordinator") + .build() .defaultHelp(true) .description("The Trogdor fault injection coordinator"); parser.addArgument("--coordinator.config", "-c") diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java b/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java index 09a99f295f896..2a06e90526035 100644 --- a/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java +++ b/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java @@ -224,7 +224,8 @@ private static void addJsonArgument(ArgumentParser parser) { public static void main(String[] args) throws Exception { ArgumentParser rootParser = ArgumentParsers - .newArgumentParser("trogdor-coordinator-client") + .newFor("trogdor-coordinator-client") + .build() .description("The Trogdor coordinator client."); Subparsers subParsers = rootParser.addSubparsers(). dest("command");