/**
*
*/
package de.saumya.mojo.ruby.script;
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class Script extends Arguments {
private final ScriptFactory scriptFactory;
private final String script;
Script(final ScriptFactory scriptFactory) {
this.scriptFactory = scriptFactory;
this.script = null;
}
Script(final ScriptFactory scriptFactory, final String script) {
this.scriptFactory = scriptFactory;
this.script = script;
}
Script(final ScriptFactory scriptFactory, final URL url) {
this(scriptFactory, url.toString(), false);
}
Script(final ScriptFactory scriptFactory, final File file) {
this(scriptFactory, file.getAbsolutePath(), false);
}
Script(final ScriptFactory scriptFactory, final String file,
final boolean search) {
this.scriptFactory = scriptFactory;
if (search) {
add("-S");
add(file);
this.script = null;
}
else {
this.script = "load('" + file + "')";
}
}
public boolean isValid() {
return this.list.size() > 0 || this.script != null;
}
public Script addArg(final File name) {
super.add(name.getAbsolutePath());
return this;
}
public Script addArg(final String name) {
super.add(name);
return this;
}
public Script addArg(final String name, final String value) {
if (value != null) {
super.add(name, value);
}
return this;
}
public Script addArg(final String name, final File value) {
if (value != null) {
super.add(name, value.getAbsolutePath());
}
return this;
}
public Script addArgs(final String line) {
super.parseAndAdd(line);
return this;
}
public void execute() throws ScriptException, IOException {
if (this.script != null) {
this.scriptFactory.launcher.executeScript(this.script, this.list);
}
else {
this.scriptFactory.launcher.execute(this.list);
}
}
public void execute(final File output) throws ScriptException,
IOException {
if (this.script != null) {
this.scriptFactory.launcher.executeScript(this.script,
this.list,
output);
}
else {
this.scriptFactory.launcher.execute(this.list, output);
}
}
public void executeIn(final File launchDirectory)
throws ScriptException, IOException {
if (this.script != null) {
this.scriptFactory.launcher.executeScript(launchDirectory,
this.script,
this.list);
}
else {
this.scriptFactory.launcher.executeIn(launchDirectory, this.list);
}
}
public void executeIn(final File launchDirectory, final File output)
throws ScriptException, IOException {
if (this.script != null) {
this.scriptFactory.launcher.executeScript(launchDirectory,
this.script,
this.list,
output);
}
else {
this.scriptFactory.launcher.executeIn(launchDirectory,
this.list,
output);
}
}
@Override
public String toString() {
final StringBuilder buf = new StringBuilder();
if (this.script != null) {
buf.append(this.script).append(" ");
}
for (final String arg : this.list) {
buf.append(arg).append(" ");
}
return buf.toString().trim();
}
}