blob: 39c17d3a3b7271eb618b202a0f99e03b3469d60a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation and others.
* 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:
* IBM - Initial API and implementation
*******************************************************************************/
package org.eclipse.update.internal.jarprocessor;
import java.io.File;
import java.util.List;
import java.util.Properties;
/**
* @author aniefer@ca.ibm.com
*
*/
public abstract class CommandStep implements IProcessStep {
protected String command = null;
protected String extension = null;
private Properties options = null;
protected boolean verbose = false;
public CommandStep(Properties options, String command, String extension, boolean verbose) {
this.command = command;
this.extension = extension;
this.options = options;
this.verbose = verbose;
}
protected static int execute(String[] cmd) {
return execute(cmd, false);
}
protected static int execute(String[] cmd, boolean verbose) {
Runtime runtime = Runtime.getRuntime();
Process proc = null;
try {
proc = runtime.exec(cmd);
StreamProcessor errorStreamProcessor = new StreamProcessor(proc.getErrorStream(), StreamProcessor.STDERR, verbose); //$NON-NLS-1$
StreamProcessor outputStreamProcessor = new StreamProcessor(proc.getInputStream(), StreamProcessor.STDOUT, verbose); //$NON-NLS-1$
errorStreamProcessor.start();
outputStreamProcessor.start();
} catch (Exception e) {
if(verbose) {
System.out.println("Error executing command " + Utils.concat(cmd)); //$NON-NLS-1$
e.printStackTrace();
}
return -1;
}
try {
int result = proc.waitFor();
return result;
} catch (InterruptedException e) {
if(verbose)
e.printStackTrace();
}
return -1;
}
public Properties getOptions() {
if(options == null)
options = new Properties();
return options;
}
public void adjustInf(File input, Properties inf, List containers) {
//nothing
}
}