[Esbox-commits] r1029 - in branches/work_Petr: org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command
baranov at garage.maemo.org
baranov at garage.maemo.org
Wed Dec 3 15:27:16 EET 2008
Author: baranov
Date: 2008-12-03 15:27:15 +0200 (Wed, 03 Dec 2008)
New Revision: 1029
Modified:
branches/work_Petr/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command/AbstractSDKCommand.java
branches/work_Petr/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/AbstractSb2Command.java
branches/work_Petr/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoRootstrapCommand.java
Log:
sb2 rootstrap installation processes write to console when they are stopped
Modified: branches/work_Petr/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command/AbstractSDKCommand.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command/AbstractSDKCommand.java 2008-12-02 23:46:40 UTC (rev 1028)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command/AbstractSDKCommand.java 2008-12-03 13:27:15 UTC (rev 1029)
@@ -54,16 +54,5 @@
*/
public abstract String replaceScratchboxConfigCommand(String action,
String[] options) throws InvalidParameterException;
- // {
- // String sboxCommand;
- //
- // if (sboxVersion == 1)
- // sboxCommand = commandAbstractor.getPreferenceValue(
- // SB1PreferenceConstants.SB1_SBOX_COMMAND);
- // else
- // sboxCommand = commandAbstractor.getPreferenceValue(
- // SB2PreferenceConstants.SB2_CONFIG_COMMAND);
- //
- // return replaceScratchboxCommand(sboxCommand, action, options);
- // }
+
}
Modified: branches/work_Petr/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/AbstractSb2Command.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/AbstractSb2Command.java 2008-12-02 23:46:40 UTC (rev 1028)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/AbstractSb2Command.java 2008-12-03 13:27:15 UTC (rev 1029)
@@ -1,4 +1,4 @@
-/*******************************************************************************
+ /*******************************************************************************
* Copyright (c) 2008 Nokia Corporation
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -10,21 +10,35 @@
*******************************************************************************/
package org.maemo.esbox.internal.scratchbox.sb2.command;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.security.InvalidParameterException;
+import java.util.Arrays;
+import java.util.List;
+
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.ui.console.MessageConsole;
import org.maemo.esbox.internal.api.scratchbox.sb2.core.SB2PreferenceConstants;
+import org.maemo.esbox.internal.scratchbox.sb2.Activator;
import org.maemo.esbox.scratchbox.core.command.AbstractSDKCommand;
+import org.maemo.mica.common.core.CoreConsoleManager;
import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.process.*;
+import org.maemo.mica.common.core.Policy;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.IProcessLauncherFactory;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils;
import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
import org.maemo.mica.common.core.sdk.commands.ICommandAbstractor;
-import java.security.InvalidParameterException;
-import java.util.Arrays;
-import java.util.List;
-
public abstract class AbstractSb2Command extends AbstractSDKCommand {
-
private final IProcessLauncherFactory processLauncherFactory;
+ private static final String lineSeparator = System.getProperty("line.separator");
public AbstractSb2Command(ICommandAbstractor commandAbstractor, IProcessLauncherFactory launcherFactory) {
super(commandAbstractor);
@@ -51,16 +65,7 @@
return replaceScratchboxCommand(sboxCommand, action, options);
}
- protected Results runProcess(String...args) throws MicaException{
- return runProcess(this.processLauncherFactory,args);
- }
-
- protected Results runProcess( IProgressMonitor monitor,String...args) throws MicaException{
- List<String> cli = Arrays.asList(args);
- IProcessLauncher launcher = processLauncherFactory.createProcessLauncher(null, cli,null);
- return ProcessLauncherUtils.launchAndReadStandardStreams(launcher, monitor);
- }
-
+
/**
* run process in host environment
* @param processLauncherFactory
@@ -72,4 +77,114 @@
return ProcessLauncherUtils.launchAndReadStandardStreams(processLauncherFactory, Arrays.asList(args));
}
+ protected Results runProcess(String...args) throws MicaException{
+ Results results = runProcess(this.processLauncherFactory,args);
+ return results;
+ }
+
+ protected Results runProcess( IProgressMonitor monitor,String...args) throws MicaException{
+ final List<String> cli = Arrays.asList(args);
+ final String cliStr = toCli(args);
+
+ final IProcessLauncher launcher = processLauncherFactory.createProcessLauncher(null, cli,null);
+ final MessageConsole console = getConsole();
+ final Process process = launcher.createProcess();
+
+ Job job = createJob(monitor, cliStr, process);
+
+ String inputStr = toString(process.getInputStream());
+ String errStr = toString(process.getErrorStream());
+ int exitCode = process.exitValue();
+
+ printToConsole(cliStr, console, inputStr, errStr);
+ if(job.getResult()!=null&&job.getResult().getSeverity()==IStatus.OK){
+ return new Results(exitCode,inputStr,errStr);
+ }
+ return null;
+ }
+
+ //--private
+ private Job createJob(IProgressMonitor monitor, final String cliStr,
+ final Process process) {
+ Job job = new Job(cliStr){
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ monitor.beginTask(cliStr, 100);
+ monitor.subTask(cliStr);
+ try{
+ try{
+ process.waitFor();
+ monitor.worked(100);
+ }catch(InterruptedException e){
+ return Status.CANCEL_STATUS;
+ }
+ }finally{
+ monitor.done();
+ }
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ protected void canceling() {
+ super.canceling();
+
+ }
+
+ };
+ job.schedule();
+ try{
+ while(job.getResult()==null){
+ Thread.sleep(500);
+ if(monitor.isCanceled()){
+ process.destroy();
+ job.cancel();
+ }
+ }
+ }catch (InterruptedException e){
+ // write to console
+ }
+ return job;
+ }
+
+ private void printToConsole(final String cliStr,
+ final MessageConsole console, String inputStr, String errStr) {
+ PrintStream stream = new PrintStream(console.newMessageStream());
+ stream.println("running:"+cliStr);
+ stream.println(inputStr);
+ if(errStr.length()!=0){
+ stream.println("Errors:");
+ stream.println(errStr);
+ }
+ }
+
+ private String toCli(String[] args) {
+ String result = "";
+ for (int i = 0; i < args.length; i++) {
+ result += " "+args[i];
+ }
+ return result;
+ }
+
+ private String toString(InputStream stream) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
+ String result="";
+ String line=null;
+ try{
+ while ((line = reader.readLine()) != null) {
+ result += line+lineSeparator;
+ }
+ }catch(IOException e){
+ Activator.getErrorLogger().log(IStatus.WARNING, "Problem while reading result", e);
+ }
+ return result;
+ }
+
+ private MessageConsole getConsole() {
+ if(console==null){
+ console=CoreConsoleManager.getInstance().getConsole(true, null, "SB2 command console");
+ }
+ return console;
+ }
+
+
}
Modified: branches/work_Petr/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoRootstrapCommand.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoRootstrapCommand.java 2008-12-02 23:46:40 UTC (rev 1028)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoRootstrapCommand.java 2008-12-03 13:27:15 UTC (rev 1029)
@@ -160,6 +160,12 @@
}
+ /**
+ * run mameo-roostraps new <name>
+ * @param name of the new rootstrap
+ * @return
+ * @throws MicaException
+ */
public boolean newRootstrap(String name) throws MicaException {
Results result = runProcess(MAEMO_ROOTSTRAP,COMMAND_NEW,name);
return result.exitCode==0;
More information about the Esbox-commits
mailing list