package hudson.plugins.groovy;
import hudson.Extension;
import hudson.FilePath;
import hudson.model.Descriptor;
import java.io.IOException;
import java.io.InputStream;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
/**
* Groovy source based on given script file.
*
* @author dvrzalik
*/
public class FileScriptSource implements ScriptSource {
private String scriptFile;
@DataBoundConstructor
public FileScriptSource(String scriptFile) {
this.scriptFile = scriptFile;
}
@Override
public FilePath getScriptFile(FilePath projectWorkspace) {
return new FilePath(projectWorkspace, scriptFile);
}
public String getScriptFile() {
return scriptFile;
}
@Override
public InputStream getScriptStream(FilePath projectWorkspace) throws IOException {
return getScriptFile(projectWorkspace).read();
}
public Descriptor<ScriptSource> getDescriptor() {
return DESCRIPTOR;
}
@Extension
public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();
public static class DescriptorImpl extends Descriptor<ScriptSource> {
public DescriptorImpl() {
super(FileScriptSource.class);
}
@Override
public String getDisplayName() {
return "Groovy script file";
}
@Override
public ScriptSource newInstance(StaplerRequest req, JSONObject formData) throws FormException {
return req.bindJSON(FileScriptSource.class, formData);
}
}
}