[yocto] [PATCH 05/13] plugins/cmake: Added run method to configure Job
Atanas Gegov
atanas.gegov.oss at gmail.com
Thu May 23 01:39:44 PDT 2013
From: Atanas Gegov <atanas.gegov at bmw-carit.de>
The job executes the configure step of the project
using the "cmake" command. The output is
presented in a new console.
---
.../managedbuilder/job/ExecuteConfigureJob.java | 25 ++++++++++
.../cmake/managedbuilder/util/ConsoleUtility.java | 49 ++++++++++++++++++++
2 files changed, 74 insertions(+)
create mode 100644 plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/util/ConsoleUtility.java
diff --git a/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/job/ExecuteConfigureJob.java b/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/job/ExecuteConfigureJob.java
index ebed4bb..29e708e 100644
--- a/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/job/ExecuteConfigureJob.java
+++ b/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/job/ExecuteConfigureJob.java
@@ -92,6 +92,31 @@ public class ExecuteConfigureJob extends Job {
*/
@Override
protected IStatus run(IProgressMonitor monitor) {
+ monitor.beginTask(
+ YoctoCMakeMessages.getString("ExecuteConfigureJob.runConfigure"), 20); //$NON-NLS-1$
+
+ IOConsoleOutputStream cos =
+ ConsoleUtility.getConsoleOutput(YoctoCMakeMessages.getFormattedString("ExecuteConfigureJob.consoleName", //$NON-NLS-1$
+ project.getName()));
+ monitor.worked(1);
+
+ try {
+ return buildProject(monitor, cos);
+ } catch (IOException e) {
+ return new Status(Status.ERROR,
+ Activator.PLUGIN_ID, Status.OK,
+ YoctoCMakeMessages.getString("ExecuteConfigureJob.error.couldNotStart"), e); //$NON-NLS-1$
+ } catch (InterruptedException e) {
+ return new Status(Status.WARNING,
+ Activator.PLUGIN_ID,
+ YoctoCMakeMessages.getString("ExecuteConfigureJob.warning.aborted")); //$NON-NLS-1$
+ } finally {
+ try {
+ cos.close();
+ } catch (IOException e) {
+ cos = null;
+ }
+ }
}
private IStatus buildProject(IProgressMonitor monitor,
diff --git a/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/util/ConsoleUtility.java b/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/util/ConsoleUtility.java
new file mode 100644
index 0000000..9fb31e5
--- /dev/null
+++ b/plugins/org.yocto.cmake.managedbuilder/src/org/yocto/cmake/managedbuilder/util/ConsoleUtility.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2013 BMW Car IT GmbH.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * BMW Car IT - initial API and implementation
+ *******************************************************************************/
+package org.yocto.cmake.managedbuilder.util;
+
+import org.eclipse.ui.console.ConsolePlugin;
+import org.eclipse.ui.console.IConsole;
+import org.eclipse.ui.console.IOConsoleOutputStream;
+import org.eclipse.ui.console.MessageConsole;
+
+
+public class ConsoleUtility {
+
+ public static IOConsoleOutputStream getConsoleOutput(String consoleName) {
+ return getConsole(consoleName).newOutputStream();
+ }
+
+ public static MessageConsole getConsole(String consoleName) {
+ MessageConsole foundConsole = findConsole(consoleName);
+ if (foundConsole != null) {
+ foundConsole.clearConsole();
+ } else {
+ foundConsole = new MessageConsole(consoleName, null);
+ ConsolePlugin.getDefault().
+ getConsoleManager().addConsoles(new IConsole[] { foundConsole });
+ }
+
+ return foundConsole;
+ }
+
+ public static MessageConsole findConsole(String consoleName) {
+ IConsole[] consoles =
+ ConsolePlugin.getDefault().getConsoleManager().getConsoles();
+ for (IConsole console : consoles) {
+ if (console.getName().equals(consoleName)) {
+ return (MessageConsole) console;
+ }
+ }
+
+ return null;
+ }
+}
--
1.7.9.5
More information about the yocto
mailing list