if (projectDir == null || plugins == null || plugins.isEmpty()) {
return;
}
for (String pluginName : plugins) {
VersionControlIgnoresPlugin plugin;
synchronized (this.plugins) {
plugin = this.plugins.get(pluginName);
}
if (plugin == null) {
continue;
}
List<String> projectIgnores = new LinkedList<String>();
if (sourceOutputLocations != null) {
List<String> emptyIgnores = new LinkedList<String>();
for (Map.Entry<String,String> sourceOutputLocation : sourceOutputLocations.entrySet()) {
String srcDir = sourceOutputLocation.getKey();
String binDir = sourceOutputLocation.getValue();
assert (srcDir != null);
assert (binDir != null);
File srcDirFile = new File(projectDir, srcDir);
/*
* when the version control system can't store empty directories and
* the source directory doesn't exist or is empty, then add empty ignores
*/
if (!plugin.canStoreEmptyDirectories() && (!srcDirFile.exists() || (srcDirFile.list().length == 0))) {
try {
plugin.addIgnores(srcDirFile, emptyIgnores);
} catch (Throwable e) {
logger.logError(String.format("Unable to add empty %s ignores to the project in %s", plugin.getInformation().getName(), projectDir), e);
}
}
/* add the corresponding output location to the project ignores */
projectIgnores.add(sanitiseGitIgnoreGlob(true, binDir, true));
}
}
if (targetDir != null && !targetDir.isEmpty()) {
/* add the target directory to the project ignores */
projectIgnores.add(sanitiseGitIgnoreGlob(true, targetDir, true));
}
if (!projectIgnores.isEmpty()) {
try {
plugin.addIgnores(projectDir, projectIgnores);
} catch (Throwable e) {
logger.logError(String.format("Unable to add %s ignores %s to the project in %s", plugin.getInformation().getName(), projectIgnores, projectDir), e);
}
}
}
}