public void exec(final IProject project, final IProgressMonitor monitor) { final ILaunchManager lm = DebugPlugin.getDefault().getLaunchManager(); final ILaunchConfigurationType configType = lm.getLaunchConfigurationType( "org.eclipse.ui.externaltools.ProgramLaunchConfigurationType"); try { final String projectName = project.getName(); final ILaunchConfigurationWorkingCopy config = configType.newInstance( null, lm.generateLaunchConfigurationName(LAUT_ENTRY + " " + projectName)); config.setAttribute("org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND", true); config.setAttribute("org.eclipse.debug.ui.ATTR_CAPTURE_IN_CONSOLE", true); config.setAttribute("org.eclipse.debug.ui.ATTR_PRIVATE", true); config.setAttribute( "org.eclipse.debug.core.ATTR_REFRESH_SCOPE", "${working_set:<?xml version=\"1.0\" encoding=\"UTF-8\"?><resources><item path=\"/" + project.getName() + "\" type=\"4\"/></resources>}"); config.setAttribute( "org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE", "${projects:" + projectName + "}"); config.setAttribute("org.eclipse.ui.externaltools.ATTR_LOCATION", getExecPath()); config.setAttribute( "org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS", "-f \"" + project.getLocation().toOSString() + "\""); config.setAttribute( "org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY", getWorkingPath().toOSString()); new LaunchHelper().launch(config, ILaunchManager.RUN_MODE, monitor); } catch (CoreException e) { AlloyCore.logError("Problem launching laut tool.", e); } }
private static void initializeLautRunner() { String lautRunnerPath = System.getProperty(LAUT_PATH); if (lautRunnerPath != null) { File lautRunnerFile = new File(lautRunnerPath); if (!lautRunnerFile.exists()) { lautRunnerPath = null; } } if (lautRunnerPath == null) { try { final Bundle lautRunnerBundle = AlloyCore.getDefault().getBundle(); URL lautUrl = null; if (lautRunnerBundle == null) { AlloyCore.logError("Unable to find laut bundle."); } else { final Enumeration<URL> lautEntries = lautRunnerBundle.findEntries("/" + LAUT_ENTRY, "/", false); if (lautEntries == null || !lautEntries.hasMoreElements()) { final Enumeration<URL> lautZipEntries = lautRunnerBundle.findEntries("/", LAUT_ZIP, false); if (lautZipEntries != null && lautZipEntries.hasMoreElements()) { final File lautZipFile = new File(FileLocator.toFileURL(lautZipEntries.nextElement()).getFile()); final File lautBundleDir = lautZipFile.getParentFile(); File lautDir = new File(lautBundleDir, LAUT_ENTRY); if (!lautBundleDir.canWrite()) { lautDir = AlloyCore.getDefault().getStateLocation().append(LAUT_ENTRY).toFile(); FileUtil.deleteDir(lautDir, true); } ZipUtil.unzip(lautZipFile, lautDir.getParentFile()); new File(lautBundleDir, "laut").renameTo(lautDir); final Enumeration<URL> lautPathEntries = lautRunnerBundle.findEntries("/" + LAUT_ENTRY, "/", false); lautUrl = lautPathEntries.nextElement(); } } else { lautUrl = lautEntries.nextElement(); } if (lautUrl != null) { final File lautRunnerDir = new File(FileLocator.toFileURL(lautUrl).getFile()); final String lautRunnerDirPath = lautRunnerDir.getAbsolutePath(); System.setProperty(LAUT_PATH, lautRunnerDirPath); setSDKExecutableFlags(new Path(lautRunnerDirPath)); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }