package com.gorillalogic.monkeytalk.processor.command;
import com.gorillalogic.monkeytalk.Command;
import com.gorillalogic.monkeytalk.processor.ProcessorExec;
import com.gorillalogic.monkeytalk.processor.PlaybackListener;
import com.gorillalogic.monkeytalk.processor.PlaybackResult;
import com.gorillalogic.monkeytalk.processor.PlaybackStatus;
import com.gorillalogic.monkeytalk.processor.Scope;
import com.gorillalogic.monkeytalk.sender.Response;
public class Sys extends BaseCommand {
public Sys(Command cmd, Scope scope, PlaybackListener listener) {
super(cmd, scope, listener);
}
public PlaybackResult exec() {
if (cmd.getArgs().size() == 0) {
return new PlaybackResult(PlaybackStatus.ERROR, "command '" + cmd.getCommand()
+ "' must have a system command to execute as its first arg", scope);
} else {
listener.onStart(scope);
Response resp = ProcessorExec.run(cmd.getArgs());
listener.onComplete(scope, resp);
return new PlaybackResult(resp, scope);
}
}
public PlaybackResult execAndReturn() {
if (cmd.getArgs().size() == 0) {
return new PlaybackResult(PlaybackStatus.ERROR, "command '" + cmd.getCommand()
+ "' must have a variable as its first arg", scope);
} else if (cmd.getArgs().size() == 1) {
return new PlaybackResult(PlaybackStatus.ERROR, "command '" + cmd.getCommand()
+ "' must have a system command to execute as its second arg", scope);
} else {
listener.onStart(scope);
Response resp = ProcessorExec.run(cmd.getArgs().subList(1, cmd.getArgs().size()));
scope.addVariable(cmd.getArgs().get(0), resp.getMessage());
listener.onComplete(scope, resp);
return new PlaybackResult(resp, scope);
}
}
}