util/GenerateProjects/GenerateProjects.java (49 lines of code) (raw):
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileWriter;
public class GenerateProjects {
private static File projectDir = new File(new File(System.getProperty("user.dir")).getParentFile().getParentFile(), "code");
private static File modulesXml = new File(new File(projectDir, ".mps"), "modules.xml");
private static String currentSubproject = null;
public static void main(String[] args) throws Exception {
System.out.println("Generating projects for "+ projectDir.getAbsolutePath()+ " into "+ modulesXml);
modulesXml.getParentFile().mkdirs();
BufferedWriter w = new BufferedWriter(new FileWriter(modulesXml));
w.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<project version=\"4\">\n" +
" <component name=\"MPSProject\">\n" +
" <projectModules>");
w.newLine();
traverse(projectDir, w);
w.write(" </projectModules>\n" +
" </component>\n" +
"</project>");
w.close();
}
private static void traverse(File f, BufferedWriter w) throws Exception {
for (File nestedFile : f.listFiles()) {
currentSubproject = nestedFile.getName();
traverseInternal(nestedFile, w);
}
}
private static void traverseInternal(File f, BufferedWriter w) throws Exception {
if (f.isDirectory()) {
if (f.getName().equals("_spreferences")) {
return;
}
for (File nestedFile : f.listFiles()) {
traverseInternal(nestedFile, w);
}
return;
}
String fName = f.getName();
if (fName.endsWith(".mpl") || fName.endsWith(".msd")) {
w.write(" <modulePath path=\"$PROJECT_DIR$/" + projectDir.toURI().relativize(f.toURI()).getPath() + "\" folder=\""+ currentSubproject +"\"/>");
w.newLine();
}else if(fName.endsWith(".devkit")) {
w.write(" <modulePath path=\"$PROJECT_DIR$/" + projectDir.toURI().relativize(f.toURI()).getPath() + "\" folder=\""+ currentSubproject +"\"/>");
w.newLine();
}
}
}