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 d8fb1f4d0b IGNITE-23101 CLI should show HOCON representation of the 
config (#4309)
d8fb1f4d0b is described below

commit d8fb1f4d0b6a631c4cd47394cdb16705724f5af9
Author: Vadim Pakhnushev <[email protected]>
AuthorDate: Fri Aug 30 16:45:35 2024 +0300

    IGNITE-23101 CLI should show HOCON representation of the config (#4309)
---
 .../commands/configuration/ItConfigCommandTest.java  | 20 +++++++++++++++-----
 .../treesitter/highlighter/JsonAnsiHighlighter.java  |  1 +
 .../internal/cli/decorators/JsonDecorator.java       | 18 +++++++++++-------
 .../commands/cluster/config/ClusterConfigTest.java   | 12 ++++--------
 .../cli/commands/node/config/NodeConfigTest.java     | 12 ++++--------
 5 files changed, 35 insertions(+), 28 deletions(-)

diff --git 
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/configuration/ItConfigCommandTest.java
 
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/configuration/ItConfigCommandTest.java
index d929343761..55968ff901 100644
--- 
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/configuration/ItConfigCommandTest.java
+++ 
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/configuration/ItConfigCommandTest.java
@@ -62,7 +62,7 @@ class ItConfigCommandTest extends CliIntegrationTest {
         assertAll(
                 this::assertExitCodeIsZero,
                 this::assertErrOutputIsEmpty,
-                () -> assertOutputContains("\"idleSyncTimeInterval\" : 1000")
+                () -> assertOutputContains("idleSyncTimeInterval=1000")
         );
     }
 
@@ -87,7 +87,9 @@ class ItConfigCommandTest extends CliIntegrationTest {
         assertAll(
                 this::assertExitCodeIsZero,
                 this::assertErrOutputIsEmpty,
-                () -> assertOutputContains("\"netClusterNodes\" : [ 
\"localhost:3344\", \"localhost:3345\" ]")
+                () -> assertOutputContains("netClusterNodes=[\n"),
+                () -> assertOutputContains("\"localhost:3344\",\n"),
+                () -> assertOutputContains("\"localhost:3345\"\n")
         );
     }
 
@@ -111,7 +113,7 @@ class ItConfigCommandTest extends CliIntegrationTest {
         assertAll(
                 this::assertExitCodeIsZero,
                 this::assertErrOutputIsEmpty,
-                () -> assertOutputContains("\"idleSyncTimeInterval\" : 2000")
+                () -> assertOutputContains("idleSyncTimeInterval=2000")
         );
     }
 
@@ -218,12 +220,20 @@ class ItConfigCommandTest extends CliIntegrationTest {
 
     @Test
     public void partialGet() {
+        execute("node", "config", "show", "--url", NODE_URL);
+        assertAll(
+                this::assertExitCodeIsZero,
+                this::assertErrOutputIsEmpty,
+                () -> assertOutputContains("inbound {"),
+                () -> assertOutputContains("clientConnector {")
+        );
+
         execute("node", "config", "show", "--url", NODE_URL, "ignite.network");
         assertAll(
                 this::assertExitCodeIsZero,
                 this::assertErrOutputIsEmpty,
-                () -> assertOutputContains("\"inbound\""),
-                () -> assertOutputDoesNotContain("\"node\"")
+                () -> assertOutputContains("inbound {"),
+                () -> assertOutputDoesNotContain("clientConnector {")
         );
     }
 }
diff --git 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/treesitter/highlighter/JsonAnsiHighlighter.java
 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/treesitter/highlighter/JsonAnsiHighlighter.java
index d9ad073c09..f22d834d88 100644
--- 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/treesitter/highlighter/JsonAnsiHighlighter.java
+++ 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/treesitter/highlighter/JsonAnsiHighlighter.java
@@ -50,6 +50,7 @@ public class JsonAnsiHighlighter {
      * @return The highlighted JSON text.
      */
     public static String highlight(String text) {
+        // TODO Use tree-sitter-hocon parser here IGNITE-23108
         var tree = Parser.parseJson(text);
         JsonTokenType[] tokens = Indexer.indexJson(text, tree);
         var sb = new StringBuilder();
diff --git 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/JsonDecorator.java
 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/JsonDecorator.java
index 65c96f8766..57e7567000 100644
--- 
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/JsonDecorator.java
+++ 
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/JsonDecorator.java
@@ -17,9 +17,10 @@
 
 package org.apache.ignite.internal.cli.decorators;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigException;
+import com.typesafe.config.ConfigFactory;
+import com.typesafe.config.ConfigRenderOptions;
 import org.apache.ignite.internal.cli.call.configuration.JsonString;
 import 
org.apache.ignite.internal.cli.commands.treesitter.highlighter.JsonAnsiHighlighter;
 import org.apache.ignite.internal.cli.core.decorator.Decorator;
@@ -39,15 +40,18 @@ public class JsonDecorator implements Decorator<JsonString, 
TerminalOutput> {
     /** {@inheritDoc} */
     @Override
     public TerminalOutput decorate(JsonString json) {
-        ObjectMapper mapper = new ObjectMapper();
         return () -> {
             try {
-                String text = mapper.writerWithDefaultPrettyPrinter()
-                        .writeValueAsString(mapper.readValue(json.getValue(), 
JsonNode.class));
+                Config config = ConfigFactory.parseString(json.getValue());
+                String text = 
config.root().render(ConfigRenderOptions.concise().setFormatted(true).setJson(false));
+                if (text.endsWith("\n")) {
+                    // Config renders with the trailing line separator, but we 
also add a separator in the handleResult.
+                    text = text.substring(0, text.length() - 1);
+                }
 
                 return highlight ? JsonAnsiHighlighter.highlight(text) : text;
 
-            } catch (JsonProcessingException e) {
+            } catch (ConfigException.Parse e) {
                 return json.getValue(); // no-op
             }
         };
diff --git 
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigTest.java
 
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigTest.java
index 74febcefba..21b9abfd96 100644
--- 
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigTest.java
+++ 
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigTest.java
@@ -39,10 +39,8 @@ class ClusterConfigTest extends IgniteCliInterfaceTestBase {
 
         execute("cluster config show --url " + mockUrl);
 
-        assertSuccessfulOutputIs("{\n"
-                + "  \"autoAdjust\" : {\n"
-                + "    \"enabled\" : true\n"
-                + "  }\n"
+        assertSuccessfulOutputIs("autoAdjust {\n"
+                + "    enabled=true\n"
                 + "}\n");
     }
 
@@ -58,10 +56,8 @@ class ClusterConfigTest extends IgniteCliInterfaceTestBase {
 
         execute("cluster config show --url " + mockUrl + " local.baseline");
 
-        assertSuccessfulOutputIs("{\n"
-                + "  \"autoAdjust\" : {\n"
-                + "    \"enabled\" : true\n"
-                + "  }\n"
+        assertSuccessfulOutputIs("autoAdjust {\n"
+                + "    enabled=true\n"
                 + "}\n");
     }
 
diff --git 
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigTest.java
 
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigTest.java
index 9ba546a388..0ff8246b67 100644
--- 
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigTest.java
+++ 
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigTest.java
@@ -39,10 +39,8 @@ public class NodeConfigTest extends 
IgniteCliInterfaceTestBase {
 
         execute("node config show --url " + mockUrl);
 
-        assertSuccessfulOutputIs("{\n"
-                + "  \"autoAdjust\" : {\n"
-                + "    \"enabled\" : true\n"
-                + "  }\n"
+        assertSuccessfulOutputIs("autoAdjust {\n"
+                + "    enabled=true\n"
                 + "}\n");
     }
 
@@ -58,10 +56,8 @@ public class NodeConfigTest extends 
IgniteCliInterfaceTestBase {
 
         execute("node config show --url " + mockUrl + " local.baseline");
 
-        assertSuccessfulOutputIs("{\n"
-                + "  \"autoAdjust\" : {\n"
-                + "    \"enabled\" : true\n"
-                + "  }\n"
+        assertSuccessfulOutputIs("autoAdjust {\n"
+                + "    enabled=true\n"
                 + "}\n");
     }
 

Reply via email to