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