package net.sourceforge.phpdt.internal.launching; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import net.sourceforge.phpdt.internal.ui.phpdocexport.JavadocExportMessages; import net.sourceforge.phpdt.internal.ui.util.ExceptionHandler; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IDebugEventSetListener; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.Launch; import org.eclipse.debug.core.model.IProcess; import org.eclipse.debug.ui.IDebugUIConstants; public class PHPInterpreter { protected File installLocation; public PHPInterpreter(File interpreter) { installLocation = interpreter; } public File getInstallLocation() { return installLocation; } public void setInstallLocation(File interpreter) { installLocation = interpreter; } public String getCommand() { return installLocation.toString(); } private boolean executePHPProcess(String arguments, File workingDirectory, String[] env) { Process process = null; try { StringBuffer buf = new StringBuffer(); buf.append(getCommand() + " " + arguments); process = Runtime.getRuntime().exec(buf.toString(), env, workingDirectory); if (process != null) { // construct a formatted command line for the process properties // for (int i= 0; i < args.length; i++) { // buf.append(args[i]); // buf.append(' '); // } ILaunchConfigurationWorkingCopy wc = null; try { ILaunchConfigurationType lcType = DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurationType( PHPLaunchConfigurationAttribute.PHP_LAUNCH_CONFIGURATION_TYPE); String name = "PHP Launcher"; //$NON-NLS-1$ wc = lcType.newInstance(null, name); wc.setAttribute(IDebugUIConstants.ATTR_FAVORITE_GROUPS, true); ILaunch newLaunch = new Launch(wc, ILaunchManager.RUN_MODE, null); IProcess iprocess = DebugPlugin.newProcess(newLaunch, process, "PHP Process"); //$NON-NLS-1$ iprocess.setAttribute(IProcess.ATTR_CMDLINE, buf.toString()); iprocess.setAttribute(IProcess.ATTR_PROCESS_TYPE, PHPLaunchConfigurationAttribute.PHP_LAUNCH_PROCESS_TYPE); DebugPlugin.getDefault().getLaunchManager().addLaunch(newLaunch); } catch (CoreException e) { } return true; } } catch (IOException e) { return false; } return false; } public Process exec(String arguments, File workingDirectory, String[] env) throws IOException { return Runtime.getRuntime().exec(getCommand() + " " + arguments, env, workingDirectory); // executePHPProcess(arguments, workingDirectory, env); } public boolean equals(Object other) { if (other instanceof PHPInterpreter) { PHPInterpreter otherInterpreter = (PHPInterpreter) other; return installLocation.equals(otherInterpreter.getInstallLocation()); } return false; } }