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; } }