mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-09 15:17:24 -05:00
99 lines
1.7 KiB
Java
99 lines
1.7 KiB
Java
package alias.action.script;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.InputStreamReader;
|
|
|
|
import message.Message;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import alias.Alias;
|
|
import alias.action.AliasActionType;
|
|
import alias.action.RecurringAction;
|
|
|
|
public class ScriptAction extends RecurringAction
|
|
{
|
|
private final static Logger mLog = LoggerFactory.getLogger( ScriptAction.class );
|
|
|
|
private String mScript;
|
|
|
|
public ScriptAction()
|
|
{
|
|
}
|
|
|
|
@Override
|
|
public AliasActionType getType()
|
|
{
|
|
return AliasActionType.SCRIPT;
|
|
}
|
|
|
|
public String getScript()
|
|
{
|
|
return mScript;
|
|
}
|
|
|
|
public void setScript( String script )
|
|
{
|
|
mScript = script;
|
|
}
|
|
|
|
@Override
|
|
public void performAction( Alias alias, Message message )
|
|
{
|
|
try
|
|
{
|
|
play();
|
|
}
|
|
catch( Exception e )
|
|
{
|
|
mLog.error( "Couldn't execute script [" + mScript + "]", e );
|
|
}
|
|
}
|
|
|
|
public void play() throws Exception
|
|
{
|
|
if( mScript != null )
|
|
{
|
|
ProcessBuilder pb = new ProcessBuilder( mScript );
|
|
|
|
pb.redirectErrorStream( true );
|
|
|
|
Process p = pb.start();
|
|
|
|
int exitCode = p.waitFor();
|
|
|
|
BufferedReader reader = new BufferedReader(
|
|
new InputStreamReader( p.getInputStream() ) );
|
|
|
|
String line = "";
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
while( ( line = reader.readLine() ) != null )
|
|
{
|
|
sb.append(line + "\n");
|
|
}
|
|
|
|
if( exitCode != 0 )
|
|
{
|
|
throw new RuntimeException( "Exit Code: " + exitCode +
|
|
" Console:" + sb.toString() );
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String toString()
|
|
{
|
|
if( mScript == null )
|
|
{
|
|
return "Run Script";
|
|
}
|
|
else
|
|
{
|
|
return "Run Script: " + mScript;
|
|
}
|
|
}
|
|
}
|