From: Mathieu Baudier Date: Sat, 22 May 2010 19:16:15 +0000 (+0000) Subject: Introduce script call X-Git-Tag: argeo-slc-2.1.7~1291 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=6ae0527d7e2999cf8d943c7bb11070fbd3d1248a;p=gpl%2Fargeo-slc.git Introduce script call git-svn-id: https://svn.argeo.org/slc/trunk@3589 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/ScriptCall.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/ScriptCall.java new file mode 100644 index 000000000..38c209a1a --- /dev/null +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/ScriptCall.java @@ -0,0 +1,45 @@ +package org.argeo.slc.lib.linux; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.io.FilenameUtils; +import org.argeo.slc.SlcException; +import org.argeo.slc.core.execution.tasks.SystemCall; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.core.io.Resource; + +public class ScriptCall extends SystemCall implements InitializingBean { + private Resource script; + private List scriptArgs = new ArrayList(); + + public void afterPropertiesSet() throws Exception { + initInterpreter(); + for (Object obj : scriptArgs) { + arg(obj.toString()); + } + setStdInFile(script); + } + + protected void initInterpreter() { + String ext = FilenameUtils.getExtension(script.getFilename()); + if ("sh".equals(ext)) + arg("/bin/sh").arg("-s"); + else if ("pl".equals(ext)) + arg("/usr/bin/perl").arg("/dev/stdin"); + else if ("py".equals(ext)) + arg("/usr/bin/python").arg("-"); + else + throw new SlcException("Cannot initialize script intepreter for " + + script); + } + + public void setScript(Resource script) { + this.script = script; + } + + public void setScriptArgs(List scriptArgs) { + this.scriptArgs = scriptArgs; + } + +}