@SafeVarargs @VisibleForTesting static BuckConfig createFromReaders( Map<Path, Reader> readers, ProjectFilesystem projectFilesystem, Platform platform, ImmutableMap<String, String> environment, ImmutableMap<String, ImmutableMap<String, String>>... configOverrides) throws IOException { ImmutableList.Builder<ImmutableMap<String, ImmutableMap<String, String>>> builder = ImmutableList.builder(); for (Map.Entry<Path, Reader> entry : readers.entrySet()) { Path filePath = entry.getKey(); Reader reader = entry.getValue(); ImmutableMap<String, ImmutableMap<String, String>> parsedConfiguration = Inis.read(reader); LOG.debug("Loaded a configuration file %s: %s", filePath, parsedConfiguration); builder.add(parsedConfiguration); } for (ImmutableMap<String, ImmutableMap<String, String>> configOverride : configOverrides) { LOG.debug("Adding configuration overrides: %s", configOverride); builder.add(configOverride); } Config config = new Config(builder.build()); return new BuckConfig(config, projectFilesystem, platform, environment); }
public static Config createDefaultConfig( Path root, ImmutableMap<String, ImmutableMap<String, String>> configOverrides) throws IOException { ImmutableList.Builder<Path> configFileBuilder = ImmutableList.builder(); configFileBuilder.addAll(listFiles(GLOBAL_BUCK_CONFIG_DIRECTORY_PATH)); if (Files.isRegularFile(GLOBAL_BUCK_CONFIG_FILE_PATH)) { configFileBuilder.add(GLOBAL_BUCK_CONFIG_FILE_PATH); } Path homeDirectory = Paths.get(System.getProperty("user.home")); Path userConfigDir = homeDirectory.resolve(DEFAULT_BUCK_CONFIG_DIRECTORY_NAME); configFileBuilder.addAll(listFiles(userConfigDir)); Path userConfigFile = homeDirectory.resolve(DEFAULT_BUCK_CONFIG_FILE_NAME); if (Files.isRegularFile(userConfigFile)) { configFileBuilder.add(userConfigFile); } Path configFile = root.resolve(DEFAULT_BUCK_CONFIG_FILE_NAME); if (Files.isRegularFile(configFile)) { configFileBuilder.add(configFile); } Path overrideConfigFile = root.resolve(DEFAULT_BUCK_CONFIG_OVERRIDE_FILE_NAME); if (Files.isRegularFile(overrideConfigFile)) { configFileBuilder.add(overrideConfigFile); } ImmutableList<Path> configFiles = configFileBuilder.build(); ImmutableList.Builder<ImmutableMap<String, ImmutableMap<String, String>>> builder = ImmutableList.builder(); for (Path file : configFiles) { try (Reader reader = Files.newBufferedReader(file, StandardCharsets.UTF_8)) { ImmutableMap<String, ImmutableMap<String, String>> parsedConfiguration = Inis.read(reader); LOG.debug("Loaded a configuration file %s: %s", file, parsedConfiguration); builder.add(parsedConfiguration); } } LOG.debug("Adding configuration overrides: %s", configOverrides); builder.add(configOverrides); return new Config(builder.build()); }