|
11 | 11 |
|
12 | 12 | importjava.io.BufferedReader; |
13 | 13 | importjava.io.File; |
14 | | -importjava.io.FileInputStream; |
15 | 14 | importjava.io.FileReader; |
16 | 15 | importjava.io.IOException; |
17 | 16 | importjava.io.InputStreamReader; |
|
27 | 26 | importjava.util.List; |
28 | 27 | importjava.util.Map; |
29 | 28 | importjava.util.Map.Entry; |
30 | | -importjava.util.Properties; |
31 | 29 | importjava.util.Set; |
32 | 30 | importjava.util.TreeMap; |
33 | 31 | importjava.util.regex.Matcher; |
|
42 | 40 | importorg.apache.commons.cli.Options; |
43 | 41 | importorg.apache.commons.cli.ParseException; |
44 | 42 | importorg.apache.commons.collections4.CollectionUtils; |
| 43 | +importorg.apache.commons.configuration2.BaseConfiguration; |
| 44 | +importorg.apache.commons.configuration2.Configuration; |
45 | 45 | importorg.apache.commons.configuration2.PropertiesConfiguration; |
46 | 46 | importorg.apache.commons.configuration2.PropertiesConfigurationLayout; |
| 47 | +importorg.apache.commons.configuration2.builder.fluent.Parameters; |
| 48 | +importorg.apache.commons.configuration2.builder.FileBasedConfigurationBuilder; |
47 | 49 | importorg.apache.commons.configuration2.ex.ConfigurationException; |
48 | 50 | importorg.apache.commons.io.FileUtils; |
49 | 51 | importorg.apache.commons.io.FilenameUtils; |
@@ -145,21 +147,34 @@ private void run(String[] args) { |
145 | 147 | System.exit(0); |
146 | 148 | } |
147 | 149 |
|
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(); |
149 | 160 | 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 |
153 | 167 | 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); |
155 | 170 | System.exit(2); |
156 | 171 | } |
157 | 172 | } |
158 | 173 |
|
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")); |
163 | 178 |
|
164 | 179 | if ((server != null) && (user != null) && (password != null)) { |
165 | 180 | runShell(server, user, password, script, line.hasOption("d")); |
|
0 commit comments