]> git.tdb.fi Git - builder.git/blobdiff - source/externaltask.h
Move package management to a separate class
[builder.git] / source / externaltask.h
index 0bd108e9a3cac68e46ca80e6f43ac434b752a70c..1b330ff745afd235d31638c87e63ff23adf0bae3 100644 (file)
@@ -4,22 +4,42 @@
 #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:
-       std::vector<std::string> argv;
+       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