You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sd...@apache.org on 2022/08/18 23:47:32 UTC

[ignite-3] branch main updated: IGNITE-17529 Override CLI config file path via environment variable (#1010)

This is an automated email from the ASF dual-hosted git repository.

sdanilov 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 83e4a2e1f5 IGNITE-17529 Override CLI config file path via environment variable (#1010)
83e4a2e1f5 is described below

commit 83e4a2e1f5fab5313ddfe5ea21fd781ecc1da2e6
Author: Vadim Pakhnushev <86...@users.noreply.github.com>
AuthorDate: Fri Aug 19 02:47:28 2022 +0300

    IGNITE-17529 Override CLI config file path via environment variable (#1010)
---
 .../apache/ignite/cli/config/ConfigConstants.java  | 46 +++++++++++++++++++++-
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/modules/cli/src/main/java/org/apache/ignite/cli/config/ConfigConstants.java b/modules/cli/src/main/java/org/apache/ignite/cli/config/ConfigConstants.java
index cf8912157f..976a06c63c 100644
--- a/modules/cli/src/main/java/org/apache/ignite/cli/config/ConfigConstants.java
+++ b/modules/cli/src/main/java/org/apache/ignite/cli/config/ConfigConstants.java
@@ -24,21 +24,63 @@ import java.nio.file.Path;
  * Util class for config CLI.
  */
 public final class ConfigConstants {
+    /**
+     * Environment variable which points to the base directory for configuration files according to XDG spec.
+     */
     private static final String XDG_CONFIG_HOME = "XDG_CONFIG_HOME";
+
+    /**
+     * Subdirectory name under the base configuration directory for ignite configuration files.
+     */
     private static final String PARENT_FOLDER_NAME = "ignitecli";
+
+    /**
+     * Main configuration file name.
+     */
     private static final String CONFIG_FILE_NAME = "defaults";
 
+    /**
+     * Environment variable which points to the configuration file.
+     */
+    private static final String IGNITE_CLI_CONFIG_FILE = "IGNITE_CLI_CONFIG_FILE";
+
+    /**
+     * Current profile property name.
+     */
     public static final String CURRENT_PROFILE = "current_profile";
+
+    /**
+     * Default cluster or node URL property name.
+     */
     public static final String CLUSTER_URL = "ignite.cluster-endpoint-url";
+
+    /**
+     * Default JDBC URL property name.
+     */
     public static final String JDBC_URL = "ignite.jdbc-url";
+
+    /**
+     * Last connected URL property name.
+     */
     public static final String LAST_CONNECTED_URL = "ignite.last-connected-url";
 
     private ConfigConstants() {
-
     }
 
-
+    /**
+     * Gets the {@link File} with user-specific configuration file.
+     * The file location can be overridden using {@code IGNITE_CLI_CONFIG_FILE} environment variable,
+     * otherwise base directory is specified by the
+     * <a href="https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG Base Directory Specification</a>
+     * and the configuration file name is {@code ignitecli/defaults} under the base directory.
+     *
+     * @return configuration file.
+     */
     public static File getConfigFile() {
+        String configFile = System.getenv(IGNITE_CLI_CONFIG_FILE);
+        if (configFile != null) {
+            return new File(configFile);
+        }
         return getConfigRoot().resolve(PARENT_FOLDER_NAME).resolve(CONFIG_FILE_NAME).toFile();
     }