]> git.tdb.fi Git - builder.git/blobdiff - source/externaltask.cpp
Utility function for capturing command output
[builder.git] / source / externaltask.cpp
index 0da81e519cc05eba437855e02da99d81722302d1..fea331a72207004e14acd85b5ebfb94fb910a840 100644 (file)
@@ -138,3 +138,16 @@ void ExternalTask::set_stderr(Destination d)
 {
        stderr_dest = d;
 }
+
+string ExternalTask::run_and_capture_output(const Arguments &argv, const FS::Path &wd)
+{
+       ExternalTask task(argv, wd);
+       task.set_stdout(CAPTURE);
+       task.set_stderr(IGNORE);
+       task.start();
+       Task::Status status;
+       while((status=task.check())==RUNNING) ;
+       if(status!=SUCCESS)
+               throw runtime_error(format("%s failed", argv.front()));
+       return task.get_output();
+}