Skip to content

Instantly share code, notes, and snippets.

@marcosscriven
Created August 21, 2015 15:44
Show Gist options
  • Save marcosscriven/3badfb3001d7e18aa668 to your computer and use it in GitHub Desktop.
Save marcosscriven/3badfb3001d7e18aa668 to your computer and use it in GitHub Desktop.
package com.myco.codestyle;
import com.intellij.codeInsight.actions.OptimizeImportsProcessor;
import com.intellij.codeInsight.actions.ReformatCodeProcessor;
import com.intellij.ide.impl.ProjectUtil;
import com.intellij.ide.plugins.PluginManager;
import com.intellij.idea.IdeaApplication;
import com.intellij.idea.Main;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ApplicationStarter;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.util.PlatformUtils;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.lang.reflect.InvocationTargetException;
public class CodeFormatApplication extends IdeaApplication {
public CodeFormatApplication(String[] args) {
super(args);
}
@NotNull
@Override
public ApplicationStarter getStarter() {
return new ApplicationStarter() {
@Override
public String getCommandName() {
return "codeformat";
}
@Override
public void premain(String[] args) {
// Nothing to do
}
@Override
public void main(String[] args) {
System.out.println("Starting code formatting.");
final String projectPath = "/Users/marcosscriven/development/sources/myproject/";
ApplicationManagerEx.getApplicationEx().runWriteAction(new Runnable() {
@Override
public void run() {
ApplicationManagerEx.getApplicationEx().doNotSave(false);
final Project project = ProjectUtil.openOrImport(projectPath, null, false);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
VirtualFileManager.getInstance().refreshWithoutFileWatcher(false);
}
});
final Module[] modules = ModuleManager.getInstance(project).getModules();
final ReformatCodeProcessor processor = new ReformatCodeProcessor(project, modules[2], false);
new OptimizeImportsProcessor(processor).run();
}
});
ApplicationManagerEx.getApplicationEx().saveAll();
System.out.println("Done");
}
};
}
public static void main(String[] args) throws InvocationTargetException, InterruptedException {
final String[] emptyArgs = new String[] {};
System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, PlatformUtils.getPlatformPrefix(PlatformUtils.IDEA_CE_PREFIX));
System.setProperty("java.awt.headless", "true");
Main.setFlags(emptyArgs);
final CodeFormatApplication app = new CodeFormatApplication(emptyArgs);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// PluginManager.installExceptionHandler();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
app.run();
}
});
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment