package jetbrains.mps.ide.mpsmigration.v_2017_1; /*Generated by MPS */ import jetbrains.mps.migration.global.BaseProjectMigration; import jetbrains.mps.project.Project; import org.jetbrains.mps.openapi.module.SearchScope; import jetbrains.mps.lang.smodel.query.runtime.CommandUtil; import jetbrains.mps.lang.smodel.query.runtime.QueryExecutionContext; import jetbrains.mps.vfs.IFile; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.project.AbstractModule; import jetbrains.mps.internal.collections.runtime.ITranslator2; import org.jetbrains.mps.openapi.persistence.ModelRoot; import jetbrains.mps.persistence.DefaultModelRoot; import jetbrains.mps.internal.collections.runtime.ISelector; import jetbrains.mps.vfs.FileSystem; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.vfs.IFileUtils; import jetbrains.mps.internal.collections.runtime.IVisitor; public class RemoveHistoryFiles extends BaseProjectMigration { public RemoveHistoryFiles() { super("jetbrains.mps.ide.mpsmigration.v35." + RemoveHistoryFiles.class.getSimpleName()); } @Override public boolean doExecute(Project project) { // remove all *.history files under DefaultModelRoots { final SearchScope scope = CommandUtil.createScope(project); QueryExecutionContext context = new QueryExecutionContext() { public SearchScope getDefaultSearchScope() { return scope; } }; Iterable<IFile> histFiles = Sequence.fromIterable(CommandUtil.modules(CommandUtil.createConsoleScope(null, false, context))).ofType(AbstractModule.class).translate(new ITranslator2<AbstractModule, ModelRoot>() { public Iterable<ModelRoot> translate(AbstractModule it) { return it.getModelRoots(); } }).ofType(DefaultModelRoot.class).select(new ISelector<DefaultModelRoot, IFile>() { public IFile select(DefaultModelRoot it) { return FileSystem.getInstance().getFile(it.getContentRoot()); } }).where(new IWhereFilter<IFile>() { public boolean accept(IFile it) { return it != null; } }).translate(new ITranslator2<IFile, IFile>() { public Iterable<IFile> translate(IFile it) { return IFileUtils.getAllFiles(it); } }).where(new IWhereFilter<IFile>() { public boolean accept(IFile it) { return !(it.isDirectory()) && it.getName().endsWith(".history"); } }); Sequence.fromIterable(histFiles).visitAll(new IVisitor<IFile>() { public void visit(IFile it) { it.delete(); } }); } return true; } @Override public String getDescription() { return "Remove .history Files"; } }