package org.foo.shell.commands;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.foo.shell.BasicCommand;
public class RunCommand extends BasicCommand {
private ExecuteCommand exec;
public void exec(String args, PrintStream out, PrintStream err)
throws Exception {
URL script = getScript(args.trim());
InputStream in = script.openStream();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
for(;;) {
String line = reader.readLine();
if ( line == null ) {
break;
}
out.println( line );
if ( !line.startsWith("#") ) {
exec.exec(line, out, err);
out.flush();
err.flush();
}
}
}
finally {
in.close();
}
}
private URL getScript(String args) throws MalformedURLException {
try {
return new URL(args);
}
catch (MalformedURLException e) {
return new File(args).toURI().toURL();
}
}
public void setExecuteCommand(ExecuteCommand exec) {
this.exec = exec;
}
}