| package com.intellij.execution; |
| |
| import com.intellij.execution.process.ProcessAdapter; |
| import com.intellij.execution.process.ProcessEvent; |
| import com.intellij.execution.process.ProcessOutputTypes; |
| import com.intellij.openapi.util.Key; |
| import org.jetbrains.annotations.NotNull; |
| |
| /** |
| * @author oleg |
| */ |
| public class OutputListener extends ProcessAdapter { |
| private final StringBuilder out; |
| private final StringBuilder err; |
| private int myExitCode; |
| |
| public OutputListener() { |
| out = new StringBuilder(); |
| err = new StringBuilder(); |
| } |
| |
| public OutputListener(@NotNull final StringBuilder out, @NotNull final StringBuilder err) { |
| this.out = out; |
| this.err = err; |
| } |
| |
| @Override |
| public void onTextAvailable(ProcessEvent event, Key outputType) { |
| if (outputType == ProcessOutputTypes.STDERR) { |
| err.append(event.getText()); |
| } |
| else if (outputType == ProcessOutputTypes.SYSTEM) { |
| // skip |
| } |
| else { |
| out.append(event.getText()); |
| } |
| } |
| |
| @Override |
| public void processTerminated(ProcessEvent event) { |
| myExitCode = event.getExitCode(); |
| } |
| |
| public Output getOutput() { |
| return new Output(out.toString(), err.toString(), myExitCode); |
| } |
| } |