| package com.google.eclipse.cdt.utils; |
| |
| import org.eclipse.cdt.utils.pty.PTY; |
| import org.eclipse.cdt.utils.spawner.ProcessFactory; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.Map.Entry; |
| |
| /** |
| * Utility methods related to processes. |
| */ |
| public final class Processes { |
| /** |
| * Starts a new process. |
| * @param command the command to execute. |
| * @param environment the environment variables. |
| * @param workingDirectory the working directory. |
| * @return the new process. |
| * @throws IOException if something went wrong. |
| */ |
| public static Process executeInPty( |
| String[] command, Map<String, String> environment, File workingDirectory) throws IOException { |
| PTY pty = new PTY(true); |
| ProcessFactory processFactory = ProcessFactory.getFactory(); |
| return processFactory.exec(command, toArray(environment), workingDirectory, pty); |
| } |
| |
| private static String[] toArray(Map<String, String> environmentMap) { |
| List<String> environment = new ArrayList<String>(); |
| for (Entry<String, String> entry : environmentMap.entrySet()) { |
| environment.add(entry.getKey() + "=" + entry.getValue()); |
| } |
| return environment.toArray(new String[environment.size()]); |
| } |
| |
| private Processes() {} |
| } |