Skip to content

Commit da0757e

Browse files
VillePekkatonygermano
authored andcommitted
Related to issue #205. Enable using environment variables in config file.
Signed-off-by: Ville Ranta-aho <ville@ville-pekka.com> Signed-off-by: Tony Germano <tony@germano.name>
1 parent e28cb55 commit da0757e

1 file changed

Lines changed: 26 additions & 11 deletions

File tree

‎command/src/com/mirth/connect/cli/CommandLineInterface.java‎

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
importjava.io.BufferedReader;
1313
importjava.io.File;
14-
importjava.io.FileInputStream;
1514
importjava.io.FileReader;
1615
importjava.io.IOException;
1716
importjava.io.InputStreamReader;
@@ -27,7 +26,6 @@
2726
importjava.util.List;
2827
importjava.util.Map;
2928
importjava.util.Map.Entry;
30-
importjava.util.Properties;
3129
importjava.util.Set;
3230
importjava.util.TreeMap;
3331
importjava.util.regex.Matcher;
@@ -42,8 +40,12 @@
4240
importorg.apache.commons.cli.Options;
4341
importorg.apache.commons.cli.ParseException;
4442
importorg.apache.commons.collections4.CollectionUtils;
43+
importorg.apache.commons.configuration2.BaseConfiguration;
44+
importorg.apache.commons.configuration2.Configuration;
4545
importorg.apache.commons.configuration2.PropertiesConfiguration;
4646
importorg.apache.commons.configuration2.PropertiesConfigurationLayout;
47+
importorg.apache.commons.configuration2.builder.fluent.Parameters;
48+
importorg.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
4749
importorg.apache.commons.configuration2.ex.ConfigurationException;
4850
importorg.apache.commons.io.FileUtils;
4951
importorg.apache.commons.io.FilenameUtils;
@@ -145,21 +147,34 @@ private void run(String[] args) {
145147
System.exit(0);
146148
}
147149

148-
PropertiesconfigDefaults = newProperties();
150+
Parametersparams = newParameters();
151+
// Read data from this file
152+
FilepropertiesFile = newFile(line.getOptionValue("c", "conf" + File.separator + "mirth-cli-config.properties"));
153+
154+
FileBasedConfigurationBuilder<PropertiesConfiguration> builder =
155+
newFileBasedConfigurationBuilder<PropertiesConfiguration>(PropertiesConfiguration.class)
156+
.configure(params.fileBased()
157+
.setFile(propertiesFile));
158+
159+
Configurationconfig = newBaseConfiguration();
149160
try {
150-
configDefaults.load(newFileInputStream(line.getOptionValue("c", "conf" + File.separator + "mirth-cli-config.properties")));
151-
} catch (IOExceptione) {
152-
// Only error out if they tried to load the config
161+
// Load properties using Apache Commons Configuration2. The resulting config
162+
// instance supports variable interpolation, including environment variables
163+
// using the ${env:VARIABLE_NAME} syntax (for example ${env:MC_SERVER_URL}).
164+
config = builder.getConfiguration();
165+
} catch (ConfigurationExceptioncex) {
166+
// loading of the configuration file failed
153167
if (line.hasOption("c")) {
154-
error("We could not find the file: " + line.getOptionValue("c"), null);
168+
// An explicit configuration file was specified with -c; fail fast with a clear error
169+
error("Failed to load the configuration file specified with -c: " + line.getOptionValue("c"), cex);
155170
System.exit(2);
156171
}
157172
}
158173

159-
Stringserver = line.getOptionValue("a", configDefaults.getProperty("address"));
160-
Stringuser = line.getOptionValue("u", configDefaults.getProperty("user"));
161-
Stringpassword = line.getOptionValue("p", configDefaults.getProperty("password"));
162-
Stringscript = line.getOptionValue("s", configDefaults.getProperty("script"));
174+
Stringserver = line.getOptionValue("a", config.getString("address"));
175+
Stringuser = line.getOptionValue("u", config.getString("user"));
176+
Stringpassword = line.getOptionValue("p", config.getString("password"));
177+
Stringscript = line.getOptionValue("s", config.getString("script"));
163178

164179
if ((server != null) && (user != null) && (password != null)) {
165180
runShell(server, user, password, script, line.hasOption("d"));

0 commit comments

Comments
 (0)