package jetbrains.mps.vcs.integration;
/*Generated by MPS */
import jetbrains.mps.ide.vfs.BaseDirectoryIndexExcludePolicy;
import jetbrains.mps.project.MPSProject;
import jetbrains.mps.vcs.MPSVcsProjectConfiguration;
import org.jetbrains.annotations.NotNull;
import com.intellij.openapi.project.Project;
import java.util.Set;
import com.intellij.openapi.vfs.VirtualFile;
import java.util.Collections;
import java.util.HashSet;
import org.jetbrains.mps.openapi.module.SModule;
import jetbrains.mps.vfs.IFile;
import jetbrains.mps.project.SModuleOperations;
import jetbrains.mps.ide.vfs.VirtualFileUtils;
public class GeneratedFilesExcludePolicy extends BaseDirectoryIndexExcludePolicy {
private final MPSProject myMPSProject;
private final MPSVcsProjectConfiguration myProjectConfig;
protected GeneratedFilesExcludePolicy(@NotNull Project project, @NotNull MPSProject mpsProject, MPSVcsProjectConfiguration config) {
super(project);
myMPSProject = mpsProject;
myProjectConfig = config;
}
@NotNull
@Override
protected Set<VirtualFile> getAllExcludeRoots() {
if (!(myProjectConfig.isIgnoreGeneratedFiles())) {
return Collections.EMPTY_SET;
}
Set<VirtualFile> roots = new HashSet<VirtualFile>();
for (SModule module : myMPSProject.getProjectModulesWithGenerators()) {
for (IFile f : SModuleOperations.getOutputRoots(module)) {
VirtualFile root = VirtualFileUtils.getProjectVirtualFile(f);
if (root != null) {
roots.add(root);
}
}
}
return roots;
}
}