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.

Reply via email to