This is an automated email from the ASF dual-hosted git repository.
apkhmv 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 2bfd9240f5e IGNITE-24579 Improve CLI help with examples for connect,
SQL, and file execution (#7550)
2bfd9240f5e is described below
commit 2bfd9240f5eac53fcd2c086af7cdea17368d4259
Author: Aleksandr Pakhomov <[email protected]>
AuthorDate: Tue Feb 10 13:47:35 2026 +0300
IGNITE-24579 Improve CLI help with examples for connect, SQL, and file
execution (#7550)
---
.../internal/cli/commands/CommandConstants.java | 1 +
.../internal/cli/commands/TopLevelCliCommand.java | 21 +++++++++++++++++++--
.../cli/commands/connect/ConnectCommand.java | 15 ++++++++++++++-
.../cli/commands/connect/ConnectReplCommand.java | 15 ++++++++++++++-
.../internal/cli/commands/sql/SqlCommand.java | 17 ++++++++++++++++-
.../internal/cli/commands/sql/SqlReplCommand.java | 17 ++++++++++++++++-
6 files changed, 80 insertions(+), 6 deletions(-)
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/CommandConstants.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/CommandConstants.java
index 9f5a12bed20..4878afa8126 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/CommandConstants.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/CommandConstants.java
@@ -31,6 +31,7 @@ public class CommandConstants {
public static final boolean SORT_OPTIONS = false;
public static final boolean SORT_SYNOPSIS = false;
public static final boolean ABBREVIATE_SYNOPSIS = true;
+ public static final String FOOTER_HEADING = "%nEXAMPLES%n";
public static final int CLUSTER_URL_OPTION_ORDER = 10;
public static final int PROFILE_OPTION_ORDER = 11;
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/TopLevelCliCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/TopLevelCliCommand.java
index f53b51ba944..04496b84621 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/TopLevelCliCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/TopLevelCliCommand.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.cli.commands;
+import static
org.apache.ignite.internal.cli.commands.CommandConstants.FOOTER_HEADING;
import static
org.apache.ignite.internal.cli.commands.CommandConstants.VERSION_OPTION_ORDER;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.VERSION_OPTION;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.VERSION_OPTION_DESC;
@@ -39,8 +40,24 @@ import picocli.CommandLine.Option;
@Command(name = "ignite",
versionProvider = VersionProvider.class,
description = {
- "Welcome to Ignite Shell alpha.",
- "Run without command to enter interactive mode.",
+ "Apache Ignite CLI tool.",
+ "",
+ "Run without arguments to enter interactive mode.",
+ "Use subcommands to execute operations non-interactively.",
+ ""},
+ footerHeading = FOOTER_HEADING,
+ footer = {
+ " Connect to a node and enter interactive mode:",
+ " ignite3 connect http://localhost:10300",
+ "",
+ " Execute a SQL query non-interactively:",
+ " ignite3 sql --jdbc-url jdbc:ignite:thin://127.0.0.1:10800
\"SELECT * FROM t\"",
+ "",
+ " Execute SQL from a file:",
+ " ignite3 sql --jdbc-url jdbc:ignite:thin://127.0.0.1:10800
--file=script.sql",
+ "",
+ " Set default JDBC URL to avoid passing --jdbc-url every
time:",
+ " ignite3 cli config set
ignite.jdbc-url=jdbc:ignite:thin://127.0.0.1:10800",
""},
subcommands = {
SqlCommand.class,
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/connect/ConnectCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/connect/ConnectCommand.java
index 055ed7be933..cd70f9a8c0b 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/connect/ConnectCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/connect/ConnectCommand.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.cli.commands.connect;
+import static
org.apache.ignite.internal.cli.commands.CommandConstants.FOOTER_HEADING;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.CLUSTER_URL_KEY;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.NODE_URL_OPTION_DESC;
@@ -37,7 +38,19 @@ import picocli.CommandLine.Parameters;
/**
* Connects to the Ignite 3 node.
*/
-@Command(name = "connect", description = "Connects to Ignite 3 node")
+@Command(name = "connect",
+ description = {
+ "Connects to an Ignite 3 node and enters interactive mode.",
+ "Once connected, you can run SQL queries and other commands
without specifying the node URL."
+ },
+ footerHeading = FOOTER_HEADING,
+ footer = {
+ " Connect to a node:",
+ " ignite3 connect http://localhost:10300",
+ "",
+ " Connect with authentication:",
+ " ignite3 connect http://localhost:10300 --username admin
--password secret",
+ ""})
public class ConnectCommand extends BaseCommand implements Callable<Integer> {
/** Node URL option. */
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/connect/ConnectReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/connect/ConnectReplCommand.java
index d997826a5bb..e0fad609361 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/connect/ConnectReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/connect/ConnectReplCommand.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.cli.commands.connect;
+import static
org.apache.ignite.internal.cli.commands.CommandConstants.FOOTER_HEADING;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.CLUSTER_URL_KEY;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.NODE_URL_OPTION_DESC;
@@ -35,7 +36,19 @@ import picocli.CommandLine.Parameters;
/**
* Connects to the Ignite 3 node in REPL mode.
*/
-@Command(name = "connect", description = "Connects to Ignite 3 node")
+@Command(name = "connect",
+ description = {
+ "Connects to an Ignite 3 node.",
+ "Once connected, you can run SQL queries and other commands
without specifying the node URL."
+ },
+ footerHeading = FOOTER_HEADING,
+ footer = {
+ " Connect to a node:",
+ " connect http://localhost:10300",
+ "",
+ " Connect with authentication:",
+ " connect http://localhost:10300 --username admin
--password secret",
+ ""})
public class ConnectReplCommand extends BaseCommand implements Runnable {
/** Node URL option. */
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/sql/SqlCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/sql/SqlCommand.java
index 918130c18a2..43fb51096d0 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/sql/SqlCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/sql/SqlCommand.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.cli.commands.sql;
+import static
org.apache.ignite.internal.cli.commands.CommandConstants.FOOTER_HEADING;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.JDBC_URL_KEY;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.JDBC_URL_OPTION;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.JDBC_URL_OPTION_DESC;
@@ -50,7 +51,21 @@ import picocli.CommandLine.Unmatched;
subcommands = {
SqlPlannerCommand.class
},
- description = "SQL query engine operations."
+ description = {
+ "Executes SQL queries against an Ignite cluster.",
+ "Provide a query as an argument or use --file to execute SQL
from a file."
+ },
+ footerHeading = FOOTER_HEADING,
+ footer = {
+ " Execute a SQL query:",
+ " ignite3 sql --jdbc-url jdbc:ignite:thin://127.0.0.1:10800
\"SELECT * FROM t\"",
+ "",
+ " Execute SQL from a file:",
+ " ignite3 sql --jdbc-url jdbc:ignite:thin://127.0.0.1:10800
--file=script.sql",
+ "",
+ " Execute with plain formatting (useful for piping):",
+ " ignite3 sql --jdbc-url jdbc:ignite:thin://127.0.0.1:10800
--plain \"SELECT * FROM t\"",
+ ""}
)
public class SqlCommand extends BaseCommand implements Callable<Integer> {
// These options are documented here for --help display but are actually
processed by SqlExecCommand.
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/sql/SqlReplCommand.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/sql/SqlReplCommand.java
index 700f5806ed3..b54f5efbe79 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/sql/SqlReplCommand.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/sql/SqlReplCommand.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.cli.commands.sql;
+import static
org.apache.ignite.internal.cli.commands.CommandConstants.FOOTER_HEADING;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.JDBC_URL_KEY;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.JDBC_URL_OPTION;
import static
org.apache.ignite.internal.cli.commands.Options.Constants.JDBC_URL_OPTION_DESC;
@@ -54,7 +55,21 @@ import picocli.CommandLine.Unmatched;
subcommands = {
SqlPlannerReplCommand.class,
},
- description = "SQL query engine operations."
+ description = {
+ "Executes SQL queries against the connected Ignite cluster.",
+ "Provide a query as an argument or use --file to execute SQL
from a file."
+ },
+ footerHeading = FOOTER_HEADING,
+ footer = {
+ " Execute a SQL query:",
+ " sql \"SELECT * FROM t\"",
+ "",
+ " Execute SQL from a file:",
+ " sql --file=script.sql",
+ "",
+ " Execute with plain formatting (useful for piping):",
+ " sql --plain \"SELECT * FROM t\"",
+ ""}
)
public class SqlReplCommand extends BaseCommand implements Callable<Integer> {
// These options are documented here for --help display but are actually
processed by SqlExecReplCommand.