@@ -71,6 +71,99 @@ if "%IGNITE_HOME%"=="" set IGNITE_HOME=%APP_HOME%
7171cd " %IGNITE_HOME% "
7272
7373call " @CONF_DIR@\@VARS_FILE_NAME@"
74+
75+ @ rem Save base values before any overrides
76+ set BASE_NODE_NAME = %NODE_NAME%
77+ set BASE_WORK_DIR = %WORK_DIR%
78+ set BASE_LOG_DIR = %LOG_DIR%
79+ set BASE_CONFIG_FILE = %CONFIG_FILE%
80+
81+ @ rem Initialize CLI override variables
82+ set CLI_NODE_NAME =
83+ set CLI_WORK_DIR =
84+ set CLI_LOG_DIR =
85+ set CLI_CONFIG_FILE =
86+ set CLI_EXTRA_CLASSPATH =
87+
88+ @ rem Parse command line arguments into CLI_* variables
89+ :parseArgs
90+ if " %~1 " == " " goto applyOverrides
91+ if " %~1 " == " --node-name" goto argNodeName
92+ if " %~1 " == " --work-dir" goto argWorkDir
93+ if " %~1 " == " --log-dir" goto argLogDir
94+ if " %~1 " == " --config" goto argConfig
95+ if " %~1 " == " --extra-classpath" goto argExtraClasspath
96+ shift
97+ goto parseArgs
98+
99+ :argNodeName
100+ if " %~2 " == " " (echo Error: --node-name requires a value 1 >& 2 & goto fail)
101+ set CLI_NODE_NAME = %~2
102+ shift
103+ shift
104+ goto parseArgs
105+
106+ :argWorkDir
107+ if " %~2 " == " " (echo Error: --work-dir requires a value 1 >& 2 & goto fail)
108+ set CLI_WORK_DIR = %~2
109+ shift
110+ shift
111+ goto parseArgs
112+
113+ :argLogDir
114+ if " %~2 " == " " (echo Error: --log-dir requires a value 1 >& 2 & goto fail)
115+ set CLI_LOG_DIR = %~2
116+ shift
117+ shift
118+ goto parseArgs
119+
120+ :argConfig
121+ if " %~2 " == " " (echo Error: --config requires a value 1 >& 2 & goto fail)
122+ set CLI_CONFIG_FILE = %~2
123+ shift
124+ shift
125+ goto parseArgs
126+
127+ :argExtraClasspath
128+ if " %~2 " == " " (echo Error: --extra-classpath requires a value 1 >& 2 & goto fail)
129+ set CLI_EXTRA_CLASSPATH = %~2
130+ shift
131+ shift
132+ goto parseArgs
133+
134+ @ rem Apply overrides in priority order: CLI args > IGNITE3_* env vars > defaults.
135+ @ rem When node name is overridden, work/log dirs become subdirectories and config file
136+ @ rem gets a node name suffix. Explicit path overrides take precedence over derived values.
137+ :applyOverrides
138+
139+ @ rem Resolve node name: CLI > env var > default
140+ if defined CLI_NODE_NAME set NODE_NAME = %CLI_NODE_NAME%
141+ if not defined CLI_NODE_NAME if defined IGNITE3_NODE_NAME set NODE_NAME = %IGNITE3_NODE_NAME%
142+
143+ @ rem If node name differs from default, derive subdirectory paths
144+ if not " %NODE_NAME% " == " %BASE_NODE_NAME% " (
145+ set " WORK_DIR = %BASE_WORK_DIR% \%NODE_NAME% "
146+ set " LOG_DIR = %BASE_LOG_DIR% \%NODE_NAME% "
147+ call set " CONFIG_FILE = %% BASE_CONFIG_FILE:.conf=-%NODE_NAME% .conf%% "
148+ )
149+
150+ @ rem Explicit path overrides take precedence over node-name derived values
151+ if defined CLI_WORK_DIR set WORK_DIR = %CLI_WORK_DIR%
152+ if not defined CLI_WORK_DIR if defined IGNITE3_WORK_DIR set WORK_DIR = %IGNITE3_WORK_DIR%
153+
154+ if defined CLI_LOG_DIR set LOG_DIR = %CLI_LOG_DIR%
155+ if not defined CLI_LOG_DIR if defined IGNITE3_LOG_DIR set LOG_DIR = %IGNITE3_LOG_DIR%
156+
157+ if defined CLI_CONFIG_FILE set CONFIG_FILE = %CLI_CONFIG_FILE%
158+ if not defined CLI_CONFIG_FILE if defined IGNITE3_CONFIG_FILE set CONFIG_FILE = %IGNITE3_CONFIG_FILE%
159+
160+ @ rem Extra classpath: CLI > env var
161+ if defined CLI_EXTRA_CLASSPATH set IGNITE3_EXTRA_CLASSPATH = %CLI_EXTRA_CLASSPATH%
162+
163+ @ rem Create work and log directories if they do not exist
164+ if not exist " %WORK_DIR% " mkdir " %WORK_DIR% "
165+ if not exist " %LOG_DIR% " mkdir " %LOG_DIR% "
166+
74167call " %LIBS_DIR% \@BOOTSTRAP_FILE_NAME@"
75168
76169@ rem Execute ignite3
0 commit comments