github.com/ijc/docker-app@v0.6.1-0.20181012090447-c7ca8bc483fb/integrations/intellij/src/main/java/RenderApp.java (about)

     1  import com.intellij.openapi.actionSystem.*;
     2  import com.intellij.openapi.project.Project;
     3  import com.intellij.openapi.ui.Messages;
     4  import com.intellij.ide.util.PropertiesComponent;
     5  
     6  import java.io.File;
     7  import java.util.Scanner;
     8  
     9  
    10  public class RenderApp extends AnAction {
    11      public RenderApp() {
    12          super("RenderApp");
    13      }
    14  
    15      public void actionPerformed(AnActionEvent event) {
    16          Project project = event.getProject();
    17          PropertiesComponent pc = PropertiesComponent.getInstance(project);
    18          String appPath = pc.getValue("docker_app_path");
    19          try {
    20              String rawSettings = pc.getValue("docker_app_overrides");
    21              String settings = "";
    22              if (!rawSettings.isEmpty()) {
    23                  String[] split = rawSettings.split("\n");
    24                  for (String l: split) {
    25                      settings += " -s " + l;
    26                  }
    27              }
    28              Process p = Runtime.getRuntime().exec("docker-app render " + appPath + settings, null, new File(project.getBasePath()));
    29              Scanner se = new Scanner(p.getErrorStream()).useDelimiter("\\A");
    30              String stderr = se.hasNext() ? se.next() : "";
    31              Scanner so = new Scanner(p.getInputStream()).useDelimiter("\\A");
    32              String stdout = so.hasNext() ? so.next() : "";
    33              Messages.showMessageDialog(project, stderr + stdout, "Rendered Application", Messages.getInformationIcon());
    34           } catch (Exception e) {
    35              Messages.showMessageDialog(project, "docker-app invocation failed with " + e.toString(), "Render Failure", Messages.getInformationIcon());
    36              e.printStackTrace();
    37          }
    38  
    39      }
    40  }