#include <string>
#include <vector>
#include <msp/fs/path.h>
+#include <msp/io/pipe.h>
#include "task.h"
class ExternalTask: public Task
{
+public:
+ enum Destination
+ {
+ PASSTHROUGH,
+ CAPTURE,
+ IGNORE
+ };
+
+ typedef std::vector<std::string> Arguments;
+
private:
+ Arguments argv;
+ Msp::FS::Path work_dir;
int pid;
int exit_code;
+ Destination stdout_dest;
+ Destination stderr_dest;
+ Msp::IO::Pipe *capture_pipe;
+ std::string output;
public:
- ExternalTask(const std::vector<std::string> &, const Msp::FS::Path &);
+ ExternalTask(const Arguments &, const Msp::FS::Path & = Msp::FS::Path());
+ virtual ~ExternalTask();
+ virtual std::string get_command() const;
virtual void start();
virtual Status check();
+
+ void set_stdout(Destination);
+ void set_stderr(Destination);
+ const std::string &get_output() const { return output; }
};
#endif