|
11 | 11 |
|
12 | 12 | import java.io.BufferedReader; |
13 | 13 | import java.io.File; |
14 | | -import java.io.FileInputStream; |
15 | 14 | import java.io.FileReader; |
16 | 15 | import java.io.IOException; |
17 | 16 | import java.io.InputStreamReader; |
|
27 | 26 | import java.util.List; |
28 | 27 | import java.util.Map; |
29 | 28 | import java.util.Map.Entry; |
30 | | -import java.util.Properties; |
31 | 29 | import java.util.Set; |
32 | 30 | import java.util.TreeMap; |
33 | 31 | import java.util.regex.Matcher; |
|
42 | 40 | import org.apache.commons.cli.Options; |
43 | 41 | import org.apache.commons.cli.ParseException; |
44 | 42 | import org.apache.commons.collections4.CollectionUtils; |
| 43 | +import org.apache.commons.configuration2.BaseConfiguration; |
| 44 | +import org.apache.commons.configuration2.Configuration; |
45 | 45 | import org.apache.commons.configuration2.PropertiesConfiguration; |
46 | 46 | import org.apache.commons.configuration2.PropertiesConfigurationLayout; |
| 47 | +import org.apache.commons.configuration2.builder.fluent.Parameters; |
| 48 | +import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder; |
47 | 49 | import org.apache.commons.configuration2.ex.ConfigurationException; |
48 | 50 | import org.apache.commons.io.FileUtils; |
49 | 51 | import org.apache.commons.io.FilenameUtils; |
@@ -145,21 +147,34 @@ private void run(String[] args) { |
145 | 147 | System.exit(0); |
146 | 148 | } |
147 | 149 |
|
148 | | - Properties configDefaults = new Properties(); |
| 150 | + Parameters params = new Parameters(); |
| 151 | + // Read data from this file |
| 152 | + File propertiesFile = new File(line.getOptionValue("c", "conf" + File.separator + "mirth-cli-config.properties")); |
| 153 | + |
| 154 | + FileBasedConfigurationBuilder<PropertiesConfiguration> builder = |
| 155 | + new FileBasedConfigurationBuilder<PropertiesConfiguration>(PropertiesConfiguration.class) |
| 156 | + .configure(params.fileBased() |
| 157 | + .setFile(propertiesFile)); |
| 158 | + |
| 159 | + Configuration config = new BaseConfiguration(); |
149 | 160 | try { |
150 | | - configDefaults.load(new FileInputStream(line.getOptionValue("c", "conf" + File.separator + "mirth-cli-config.properties"))); |
151 | | - } catch (IOException e) { |
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 (ConfigurationException cex) { |
| 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 | | - String server = line.getOptionValue("a", configDefaults.getProperty("address")); |
160 | | - String user = line.getOptionValue("u", configDefaults.getProperty("user")); |
161 | | - String password = line.getOptionValue("p", configDefaults.getProperty("password")); |
162 | | - String script = line.getOptionValue("s", configDefaults.getProperty("script")); |
| 174 | + String server = line.getOptionValue("a", config.getString("address")); |
| 175 | + String user = line.getOptionValue("u", config.getString("user")); |
| 176 | + String password = line.getOptionValue("p", config.getString("password")); |
| 177 | + String script = 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