Skip to content

Commit

Permalink
Fix #1780 Add api method to load configuration files from the default…
Browse files Browse the repository at this point in the history
… locations
  • Loading branch information
Lyeeedar committed Mar 2, 2020
1 parent 3c9df12 commit 2a353ff
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -435,10 +435,9 @@ public boolean accept(File dir, String name) {
/* private -> for testing */
static void loadConfigurationFromConfigFiles(Map<String, String> config, CommandLineArguments commandLineArguments, Map<String, String> envVars) {
String encoding = determineConfigurationFileEncoding(commandLineArguments, envVars);
File installationDir = new File(getInstallationDir());

config.putAll(ConfigUtils.loadConfigurationFile(new File(getInstallationDir() + "/conf/" + ConfigUtils.CONFIG_FILE_NAME), encoding, false));
config.putAll(ConfigUtils.loadConfigurationFile(new File(System.getProperty("user.home") + "/" + ConfigUtils.CONFIG_FILE_NAME), encoding, false));
config.putAll(ConfigUtils.loadConfigurationFile(new File(ConfigUtils.CONFIG_FILE_NAME), encoding, false));
config.putAll(ConfigUtils.loadDefaultConfigurationFiles(installationDir, encoding));

for (File configFile : determineConfigFilesFromArgs(commandLineArguments, envVars)) {
config.putAll(ConfigUtils.loadConfigurationFile(configFile, encoding, true));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@
import org.flywaydb.core.api.callback.Callback;
import org.flywaydb.core.api.migration.JavaMigration;
import org.flywaydb.core.api.resolver.MigrationResolver;
import org.flywaydb.core.internal.configuration.ConfigUtils;
import org.flywaydb.core.internal.util.ClassUtils;

import javax.sql.DataSource;
import java.io.File;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

Expand Down Expand Up @@ -1052,6 +1055,39 @@ public FluentConfiguration configuration(Map<String, String> props) {
return this;
}

/**
* Load configuration files from the default locations:
* $installationDir$/conf/flyway.conf
* $user.home$/flyway.conf
* $workingDirectory$/flyway.conf
*
* The configuration files must be encoded with UTF-8.
*
* @throws FlywayException when the configuration failed.
*/
public FluentConfiguration loadDefaultConfigurationFiles() {
return loadDefaultConfigurationFiles("UTF-8");
}

/**
* Load configuration files from the default locations:
* $installationDir$/conf/flyway.conf
* $user.home$/flyway.conf
* $workingDirectory$/flyway.conf
*
* @param encoding the conf file encoding.
* @throws FlywayException when the configuration failed.
*/
public FluentConfiguration loadDefaultConfigurationFiles(String encoding) {
String installationPath = ClassUtils.getLocationOnDisk(FluentConfiguration.class);
File installationDir = new File(installationPath).getParentFile();

Map<String, String> configMap = ConfigUtils.loadDefaultConfigurationFiles(installationDir, encoding);

config.configure(configMap);
return this;
}

/**
* Configures Flyway using FLYWAY_* environment variables.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,24 @@ private static String convertKey(String key) {
return null;
}

/**
* Load configuration files from the default locations:
* $installationDir$/conf/flyway.conf
* $user.home$/flyway.conf
* $workingDirectory$/flyway.conf
*
* @param encoding the conf file encoding.
* @throws FlywayException when the configuration failed.
*/
public static Map<String, String> loadDefaultConfigurationFiles(File installationDir, String encoding) {
Map<String, String> configMap = new HashMap<>();
configMap.putAll(ConfigUtils.loadConfigurationFile(new File(installationDir.getAbsolutePath() + "/conf/" + ConfigUtils.CONFIG_FILE_NAME), encoding, false));
configMap.putAll(ConfigUtils.loadConfigurationFile(new File(System.getProperty("user.home") + "/" + ConfigUtils.CONFIG_FILE_NAME), encoding, false));
configMap.putAll(ConfigUtils.loadConfigurationFile(new File(ConfigUtils.CONFIG_FILE_NAME), encoding, false));

return configMap;
}

/**
* Loads the configuration from this configuration file.
*
Expand Down

0 comments on commit 2a353ff

Please sign in to comment.