X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPInterpreter.java b/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPInterpreter.java index 151d5f0..f8b5ac1 100644 --- a/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPInterpreter.java +++ b/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/PHPInterpreter.java @@ -1,59 +1,98 @@ package net.sourceforge.phpdt.internal.launching; import java.io.File; +import java.io.FileWriter; import java.io.IOException; +import java.util.ArrayList; -import org.eclipse.core.runtime.IPath; +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 { - //public final String endOfOptionsDelimeter = " -- "; - - protected IPath installLocation; - protected String name; - - public PHPInterpreter(String aName, IPath validInstallLocation) { - name = aName; - installLocation = validInstallLocation; - } - - public IPath getInstallLocation() { - return installLocation; - } - - public void setInstallLocation(IPath validInstallLocation) { - installLocation = validInstallLocation; - } - - public String getName() { - return name; - } - - public void setName(String newName) { - name = newName; - } - - public String getCommand() { - String directory = installLocation.toOSString() + File.separator; - if (new File(directory + "php.exe").isFile()) - return directory + "php.exe"; - - if (new File(directory, "php").isFile()) - return directory + "php"; - - return null; - } - - public Process exec(String arguments, File workingDirectory, String[] env) throws IOException { - return Runtime.getRuntime().exec(this.getCommand() + " " + arguments, env, workingDirectory); - } - - public boolean equals(Object other) { - if (other instanceof PHPInterpreter) { - PHPInterpreter otherInterpreter = (PHPInterpreter) other; - if (name.equals(otherInterpreter.getName())) - return installLocation.equals(otherInterpreter.getInstallLocation()); - } - - return false; - } -} + + 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; + } +} \ No newline at end of file