X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexternaltask.h;h=26a6acabe569356e630e109289ed8cb8e80e0546;hb=HEAD;hp=d997f9a7b4891ad473aea0d2cfdffb8bcd53bef5;hpb=06678c3bb61404c483e4b9c39eaa7e7fb3f40c62;p=builder.git diff --git a/source/externaltask.h b/source/externaltask.h deleted file mode 100644 index d997f9a..0000000 --- a/source/externaltask.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef EXTERNALTASK_H_ -#define EXTERNALTASK_H_ - -#include -#include -#include -#include -#include "task.h" - -/** -Runs an external command. A zero exit status is translated to a SUCCESS status -for the task, and anything else is treated as an error. Output can optionally -be captured. -*/ -class ExternalTask: public Task -{ -public: - enum Destination - { - PASSTHROUGH, - CAPTURE, - IGNORE - }; - - typedef std::vector 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: - /** Creates an ExternalTask with an argument array and an optional working - directory. The first element of the argument array should be the command - name. If the working directory is not specified, no chdir is done. */ - 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; } - - /** Executes a command and captures its output. Stderr is ignored, but if - the command exits with a nonzero status, an exception is thrown. */ - static std::string run_and_capture_output(const Arguments &, const Msp::FS::Path & = Msp::FS::Path()); -}; - -#endif