You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2022/11/11 10:46:24 UTC
[ignite-3] branch main updated: IGNITE-17977 Add support for '--help' option to all CLI commands (#1315)
This is an automated email from the ASF dual-hosted git repository.
ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 3c13c03d70 IGNITE-17977 Add support for '--help' option to all CLI commands (#1315)
3c13c03d70 is described below
commit 3c13c03d70eb2cbee0abf56fd017a4c42705c105
Author: Ivan Gagarkin <ga...@gmail.com>
AuthorDate: Fri Nov 11 14:46:19 2022 +0400
IGNITE-17977 Add support for '--help' option to all CLI commands (#1315)
---
.../topology/ItTopologyCommandInitializedClusterTest.java | 1 -
.../ItTopologyCommandNotInitializedClusterTest.java | 1 -
.../internal/cli/commands/cluster/ClusterCommand.java | 5 +++--
.../internal/cli/commands/cluster/ClusterReplCommand.java | 5 +++--
.../{ => cluster}/topology/LogicalTopologyCommand.java | 2 +-
.../{ => cluster}/topology/LogicalTopologyReplCommand.java | 2 +-
.../{ => cluster}/topology/PhysicalTopologyCommand.java | 2 +-
.../{ => cluster}/topology/PhysicalTopologyReplCommand.java | 2 +-
.../commands/{ => cluster}/topology/TopologyCommand.java | 7 +++++--
.../{ => cluster}/topology/TopologyReplCommand.java | 7 +++++--
.../ignite/internal/cli/commands/node/NodeCommand.java | 10 ++++++++--
.../ignite/internal/cli/commands/node/NodeReplCommand.java | 10 ++++++++--
.../cli/commands/node/config/NodeConfigCommand.java | 5 ++++-
.../cli/commands/node/config/NodeConfigReplCommand.java | 5 ++++-
.../cli/commands/node/metric/NodeMetricCommand.java | 6 +++++-
.../cli/commands/node/metric/NodeMetricReplCommand.java | 6 +++++-
.../cli/core/repl/executor/IgnitePicocliCommands.java | 5 +++++
.../cli/core/repl/executor/RegistryCommandExecutor.java | 13 +++++++++++--
.../internal/cli/core/repl/executor/ReplExecutor.java | 3 +--
.../internal/cli/commands/UrlOptionsNegativeTest.java | 8 ++++----
20 files changed, 75 insertions(+), 30 deletions(-)
diff --git a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/cluster/topology/ItTopologyCommandInitializedClusterTest.java b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/cluster/topology/ItTopologyCommandInitializedClusterTest.java
index c42c186dda..770c0b6e61 100644
--- a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/cluster/topology/ItTopologyCommandInitializedClusterTest.java
+++ b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/cluster/topology/ItTopologyCommandInitializedClusterTest.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.cli.commands.cluster.topology;
import static org.junit.jupiter.api.Assertions.assertAll;
import org.apache.ignite.internal.cli.commands.CliCommandTestInitializedIntegrationBase;
-import org.apache.ignite.internal.cli.commands.topology.TopologyCommand;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
diff --git a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/cluster/topology/ItTopologyCommandNotInitializedClusterTest.java b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/cluster/topology/ItTopologyCommandNotInitializedClusterTest.java
index 4af17214b5..c03ff780d7 100644
--- a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/cluster/topology/ItTopologyCommandNotInitializedClusterTest.java
+++ b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/cluster/topology/ItTopologyCommandNotInitializedClusterTest.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.cli.commands.cluster.topology;
import static org.junit.jupiter.api.Assertions.assertAll;
import org.apache.ignite.internal.cli.commands.CliCommandTestNotInitializedIntegrationBase;
-import org.apache.ignite.internal.cli.commands.topology.TopologyCommand;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/ClusterCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/ClusterCommand.java
index b17b336caf..d49573368d 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/ClusterCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/ClusterCommand.java
@@ -17,10 +17,11 @@
package org.apache.ignite.internal.cli.commands.cluster;
+import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.commands.cluster.config.ClusterConfigCommand;
import org.apache.ignite.internal.cli.commands.cluster.init.ClusterInitCommand;
import org.apache.ignite.internal.cli.commands.cluster.status.ClusterStatusCommand;
-import org.apache.ignite.internal.cli.commands.topology.TopologyCommand;
+import org.apache.ignite.internal.cli.commands.cluster.topology.TopologyCommand;
import picocli.CommandLine.Command;
/**
@@ -34,5 +35,5 @@ import picocli.CommandLine.Command;
TopologyCommand.class
},
description = "Manages an Ignite cluster")
-public class ClusterCommand {
+public class ClusterCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/ClusterReplCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/ClusterReplCommand.java
index 9c1f72fd35..2dfa09c3d5 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/ClusterReplCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/ClusterReplCommand.java
@@ -17,10 +17,11 @@
package org.apache.ignite.internal.cli.commands.cluster;
+import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.commands.cluster.config.ClusterConfigReplCommand;
import org.apache.ignite.internal.cli.commands.cluster.init.ClusterInitReplCommand;
import org.apache.ignite.internal.cli.commands.cluster.status.ClusterStatusReplCommand;
-import org.apache.ignite.internal.cli.commands.topology.TopologyReplCommand;
+import org.apache.ignite.internal.cli.commands.cluster.topology.TopologyReplCommand;
import picocli.CommandLine.Command;
/**
@@ -34,5 +35,5 @@ import picocli.CommandLine.Command;
TopologyReplCommand.class
},
description = "Manages an Ignite cluster")
-public class ClusterReplCommand {
+public class ClusterReplCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/LogicalTopologyCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyCommand.java
similarity index 97%
rename from modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/LogicalTopologyCommand.java
rename to modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyCommand.java
index ac3342edfe..f4b994aeb6 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/LogicalTopologyCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyCommand.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.cli.commands.topology;
+package org.apache.ignite.internal.cli.commands.cluster.topology;
import jakarta.inject.Inject;
import java.util.concurrent.Callable;
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/LogicalTopologyReplCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyReplCommand.java
similarity index 97%
rename from modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/LogicalTopologyReplCommand.java
rename to modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyReplCommand.java
index c0040eda3a..37c0f7f7a7 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/LogicalTopologyReplCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/LogicalTopologyReplCommand.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.cli.commands.topology;
+package org.apache.ignite.internal.cli.commands.cluster.topology;
import jakarta.inject.Inject;
import org.apache.ignite.internal.cli.call.cluster.topology.LogicalTopologyCall;
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/PhysicalTopologyCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/PhysicalTopologyCommand.java
similarity index 97%
rename from modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/PhysicalTopologyCommand.java
rename to modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/PhysicalTopologyCommand.java
index 4bf9fdf704..a28f3fc274 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/PhysicalTopologyCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/PhysicalTopologyCommand.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.cli.commands.topology;
+package org.apache.ignite.internal.cli.commands.cluster.topology;
import jakarta.inject.Inject;
import java.util.concurrent.Callable;
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/PhysicalTopologyReplCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/PhysicalTopologyReplCommand.java
similarity index 97%
rename from modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/PhysicalTopologyReplCommand.java
rename to modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/PhysicalTopologyReplCommand.java
index 97f61c6ee2..b72f450f55 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/PhysicalTopologyReplCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/PhysicalTopologyReplCommand.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.cli.commands.topology;
+package org.apache.ignite.internal.cli.commands.cluster.topology;
import jakarta.inject.Inject;
import org.apache.ignite.internal.cli.call.cluster.topology.PhysicalTopologyCall;
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/TopologyCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/TopologyCommand.java
similarity index 84%
rename from modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/TopologyCommand.java
rename to modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/TopologyCommand.java
index 5c4245d7b6..a8e1655a56 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/TopologyCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/TopologyCommand.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.cli.commands.topology;
+package org.apache.ignite.internal.cli.commands.cluster.topology;
import org.apache.ignite.internal.cli.commands.BaseCommand;
import picocli.CommandLine.Command;
@@ -24,6 +24,9 @@ import picocli.CommandLine.Command;
* Command that prints ignite cluster topology.
*/
@Command(name = "topology", description = "Prints topology information",
- subcommands = {PhysicalTopologyCommand.class, LogicalTopologyCommand.class })
+ subcommands = {
+ PhysicalTopologyCommand.class,
+ LogicalTopologyCommand.class
+ })
public class TopologyCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/TopologyReplCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/TopologyReplCommand.java
similarity index 84%
rename from modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/TopologyReplCommand.java
rename to modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/TopologyReplCommand.java
index fe94769cd7..deafb8913a 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/topology/TopologyReplCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/cluster/topology/TopologyReplCommand.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.cli.commands.topology;
+package org.apache.ignite.internal.cli.commands.cluster.topology;
import org.apache.ignite.internal.cli.commands.BaseCommand;
import picocli.CommandLine.Command;
@@ -24,6 +24,9 @@ import picocli.CommandLine.Command;
* Command that prints ignite cluster topology in REPL mode.
*/
@Command(name = "topology", description = "Prints topology information",
- subcommands = {PhysicalTopologyReplCommand.class, LogicalTopologyReplCommand.class })
+ subcommands = {
+ PhysicalTopologyReplCommand.class,
+ LogicalTopologyReplCommand.class
+ })
public class TopologyReplCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/NodeCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/NodeCommand.java
index bdaa852210..949f8d2ed3 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/NodeCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/NodeCommand.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.cli.commands.node;
+import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.commands.node.config.NodeConfigCommand;
import org.apache.ignite.internal.cli.commands.node.metric.NodeMetricCommand;
import org.apache.ignite.internal.cli.commands.node.status.NodeStatusCommand;
@@ -25,7 +26,12 @@ import picocli.CommandLine.Command;
/** Node command. */
@Command(name = "node",
- subcommands = {NodeConfigCommand.class, NodeStatusCommand.class, NodeVersionCommand.class, NodeMetricCommand.class},
+ subcommands = {
+ NodeConfigCommand.class,
+ NodeStatusCommand.class,
+ NodeVersionCommand.class,
+ NodeMetricCommand.class
+ },
description = "Node operations")
-public class NodeCommand {
+public class NodeCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/NodeReplCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/NodeReplCommand.java
index 3f880f0732..f66615a7f6 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/NodeReplCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/NodeReplCommand.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.cli.commands.node;
+import org.apache.ignite.internal.cli.commands.BaseCommand;
import org.apache.ignite.internal.cli.commands.node.config.NodeConfigReplCommand;
import org.apache.ignite.internal.cli.commands.node.metric.NodeMetricReplCommand;
import org.apache.ignite.internal.cli.commands.node.status.NodeStatusReplCommand;
@@ -25,7 +26,12 @@ import picocli.CommandLine.Command;
/** Node command in REPL mode. */
@Command(name = "node",
- subcommands = {NodeConfigReplCommand.class, NodeStatusReplCommand.class, NodeVersionReplCommand.class, NodeMetricReplCommand.class},
+ subcommands = {
+ NodeConfigReplCommand.class,
+ NodeStatusReplCommand.class,
+ NodeVersionReplCommand.class,
+ NodeMetricReplCommand.class
+ },
description = "Node operations")
-public class NodeReplCommand {
+public class NodeReplCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigCommand.java
index b72f2198da..7a6dcc8561 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigCommand.java
@@ -24,7 +24,10 @@ import picocli.CommandLine.Command;
* Node config command.
*/
@Command(name = "config",
- subcommands = {NodeConfigShowCommand.class, NodeConfigUpdateCommand.class},
+ subcommands = {
+ NodeConfigShowCommand.class,
+ NodeConfigUpdateCommand.class
+ },
description = "Node config operations")
public class NodeConfigCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigReplCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigReplCommand.java
index 44c6202cce..b2d0724a6d 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigReplCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigReplCommand.java
@@ -24,7 +24,10 @@ import picocli.CommandLine.Command;
* Node config command in REPL mode.
*/
@Command(name = "config",
- subcommands = {NodeConfigShowReplCommand.class, NodeConfigUpdateReplCommand.class},
+ subcommands = {
+ NodeConfigShowReplCommand.class,
+ NodeConfigUpdateReplCommand.class
+ },
description = "Node config operations")
public class NodeConfigReplCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricCommand.java
index 752dad0028..0a43305964 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricCommand.java
@@ -22,7 +22,11 @@ import picocli.CommandLine.Command;
/** Node metric command. */
@Command(name = "metric",
- subcommands = {NodeMetricEnableCommand.class, NodeMetricDisableCommand.class, NodeMetricListCommand.class},
+ subcommands = {
+ NodeMetricEnableCommand.class,
+ NodeMetricDisableCommand.class,
+ NodeMetricListCommand.class
+ },
description = "Node metric operations")
public class NodeMetricCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricReplCommand.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricReplCommand.java
index 2a2154b7b4..7f253c6a76 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricReplCommand.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/node/metric/NodeMetricReplCommand.java
@@ -22,7 +22,11 @@ import picocli.CommandLine.Command;
/** Node metric command in REPL. */
@Command(name = "metric",
- subcommands = {NodeMetricEnableReplCommand.class, NodeMetricDisableReplCommand.class, NodeMetricListReplCommand.class},
+ subcommands = {
+ NodeMetricEnableReplCommand.class,
+ NodeMetricDisableReplCommand.class,
+ NodeMetricListReplCommand.class
+ },
description = "Node metric operations")
public class NodeMetricReplCommand extends BaseCommand {
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/IgnitePicocliCommands.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/IgnitePicocliCommands.java
index 21c7596995..db4d26ef35 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/IgnitePicocliCommands.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/IgnitePicocliCommands.java
@@ -73,6 +73,11 @@ public class IgnitePicocliCommands implements CommandRegistry {
}
}
+ /** Returns the usage help message as a String. */
+ public String usageMessage() {
+ return cmd.getUsageMessage();
+ }
+
/** {@inheritDoc} */
@Override
public boolean hasCommand(String command) {
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/RegistryCommandExecutor.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/RegistryCommandExecutor.java
index 7e8f342a5b..ba3b0d095f 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/RegistryCommandExecutor.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/RegistryCommandExecutor.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.cli.core.repl.executor;
+import java.util.function.Supplier;
import org.apache.ignite.internal.cli.core.call.Call;
import org.apache.ignite.internal.cli.core.call.CallOutput;
import org.apache.ignite.internal.cli.core.call.DefaultCallOutput;
@@ -35,15 +36,19 @@ public class RegistryCommandExecutor implements Call<StringCallInput, Object> {
private final Parser parser;
+ private final Supplier<String> usageMessage;
+
/**
* Constructor.
*
* @param systemRegistry {@link SystemRegistry} instance.
* @param parser A {@link Parser} used to create {@code systemRegistry}.
+ * @param usage A {@link Supplier} used to provide help message.
*/
- public RegistryCommandExecutor(SystemRegistry systemRegistry, Parser parser) {
+ public RegistryCommandExecutor(SystemRegistry systemRegistry, Parser parser, Supplier<String> usage) {
this.systemRegistry = systemRegistry;
this.parser = parser;
+ this.usageMessage = usage;
}
/**
@@ -55,7 +60,11 @@ public class RegistryCommandExecutor implements Call<StringCallInput, Object> {
@Override
public CallOutput<Object> execute(StringCallInput input) {
try {
- Object executionResult = systemRegistry.execute(input.getString());
+ String line = input.getString();
+ if (line.trim().equals("help")) {
+ return DefaultCallOutput.success(usageMessage.get());
+ }
+ Object executionResult = systemRegistry.execute(line);
if (executionResult == null) {
return DefaultCallOutput.empty();
}
diff --git a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/ReplExecutor.java b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/ReplExecutor.java
index 5e333de399..0240d990fd 100644
--- a/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/ReplExecutor.java
+++ b/modules/cli/src/main/java/org/apache/ignite/internal/cli/core/repl/executor/ReplExecutor.java
@@ -89,7 +89,6 @@ public class ReplExecutor {
IgnitePicocliCommands picocliCommands = createPicocliCommands(repl);
SystemRegistryImpl registry = new SystemRegistryImpl(parser, terminal, workDirProvider, null);
registry.setCommandRegistries(picocliCommands);
- registry.register("help", picocliCommands);
LineReader reader = createReader(repl.getCompleter() != null
? new AggregateCompleter(registry.completer(), repl.getCompleter())
@@ -98,7 +97,7 @@ public class ReplExecutor {
reader.variable(LineReader.HISTORY_FILE, StateFolderProvider.getStateFile(repl.getHistoryFileName()));
}
- RegistryCommandExecutor executor = new RegistryCommandExecutor(registry, parser);
+ RegistryCommandExecutor executor = new RegistryCommandExecutor(registry, parser, picocliCommands::usageMessage);
TailTipWidgets widgets = repl.isTailTipWidgetsEnabled() ? createWidgets(registry, reader) : null;
QuestionAskerFactory.setReadWriter(new JlineQuestionWriterReader(reader, widgets));
diff --git a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/UrlOptionsNegativeTest.java b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/UrlOptionsNegativeTest.java
index d06340e546..d8af870e95 100644
--- a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/UrlOptionsNegativeTest.java
+++ b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/UrlOptionsNegativeTest.java
@@ -39,6 +39,10 @@ import org.apache.ignite.internal.cli.commands.cluster.init.ClusterInitCommand;
import org.apache.ignite.internal.cli.commands.cluster.init.ClusterInitReplCommand;
import org.apache.ignite.internal.cli.commands.cluster.status.ClusterStatusCommand;
import org.apache.ignite.internal.cli.commands.cluster.status.ClusterStatusReplCommand;
+import org.apache.ignite.internal.cli.commands.cluster.topology.LogicalTopologyCommand;
+import org.apache.ignite.internal.cli.commands.cluster.topology.LogicalTopologyReplCommand;
+import org.apache.ignite.internal.cli.commands.cluster.topology.PhysicalTopologyCommand;
+import org.apache.ignite.internal.cli.commands.cluster.topology.PhysicalTopologyReplCommand;
import org.apache.ignite.internal.cli.commands.connect.ConnectCommand;
import org.apache.ignite.internal.cli.commands.node.config.NodeConfigShowCommand;
import org.apache.ignite.internal.cli.commands.node.config.NodeConfigShowReplCommand;
@@ -52,10 +56,6 @@ import org.apache.ignite.internal.cli.commands.node.metric.NodeMetricListCommand
import org.apache.ignite.internal.cli.commands.node.metric.NodeMetricListReplCommand;
import org.apache.ignite.internal.cli.commands.node.status.NodeStatusCommand;
import org.apache.ignite.internal.cli.commands.node.status.NodeStatusReplCommand;
-import org.apache.ignite.internal.cli.commands.topology.LogicalTopologyCommand;
-import org.apache.ignite.internal.cli.commands.topology.LogicalTopologyReplCommand;
-import org.apache.ignite.internal.cli.commands.topology.PhysicalTopologyCommand;
-import org.apache.ignite.internal.cli.commands.topology.PhysicalTopologyReplCommand;
import org.apache.ignite.internal.cli.config.ini.IniConfigManager;
import org.apache.ignite.internal.cli.core.repl.context.CommandLineContextProvider;
import org.junit.jupiter.api.DisplayName;