package org.erlide.common.process;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.erlide.common.process.OutputParser;
import org.erlide.common.process.StreamListener;
@SuppressWarnings("all")
public class ProcessLauncher {
public static Process launchProcess(final IFile file, final List<String> cmdLine, final File workingDirectory, final OutputParser parser) {
final ProcessBuilder builder = new ProcessBuilder(cmdLine);
builder.directory(workingDirectory);
try {
final Process process = builder.start();
InputStream _inputStream = process.getInputStream();
final Procedure1<String> _function = new Procedure1<String>() {
@Override
public void apply(final String it) {
parser.parseLine(it);
}
};
new StreamListener(_inputStream, _function);
return process;
} catch (final Throwable _t) {
if (_t instanceof IOException) {
final IOException e = (IOException)_t;
return null;
} else {
throw Exceptions.sneakyThrow(_t);
}
}
}
}