Example #1
0
  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);
    }
  }
Example #2
0
  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();
      }
    }
  }