package hudson.cli.util; import hudson.AbortException; import jenkins.security.MasterToSlaveCallable; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; /** * Reads a file (either a path or URL) over a channel. * * @author vjuranek */ public class ScriptLoader extends MasterToSlaveCallable<String,IOException> { private final String script; public ScriptLoader(String script){ this.script = script; } public String call() throws IOException { File f = new File(script); if(f.exists()) return FileUtils.readFileToString(f); URL url; try { url = new URL(script); } catch (MalformedURLException e) { throw new AbortException("Unable to find a script "+script); } InputStream s = url.openStream(); try { return IOUtils.toString(s); } finally { s.close(); } } }