package fr.ens.biologie.genomique.eoulsan.galaxytools.executorinterpreters;
import java.io.File;
import java.io.IOException;
import java.util.List;
import fr.ens.biologie.genomique.eoulsan.galaxytools.ToolExecutorResult;
/**
* This interface define a executor interpreter for Galaxy tools.
* @author Laurent Jourdren
* @since 2.0
*/
public interface ExecutorInterpreter {
/**
* Get the name of the interpreter.
* @return the name of the interpreter
*/
String getName();
/**
* Create the command line for the the argument of the interpreter.
* @param arguments the interpreter arguments
* @return the command line
*/
List<String> createCommandLine(String arguments);
/**
* Execute a command line.
* @param commandLine the command line to execute
* @param executionDirectory execution directory
* @param temporaryDirectory temporary directory
* @param stdoutFile stdout file
* @param stderrFile stderr file
* @param filesUsed files used
* @return a ToolExecutor object
* @throws IOException if an error occurs while executing the command
*/
ToolExecutorResult execute(final List<String> commandLine,
File executionDirectory, File temporaryDirectory, File stdoutFile,
File stderrFile, File... filesUsed) throws IOException;
}