#include "builder.h"
#include "compilecommandsgenerator.h"
#include "compilecommandsjson.h"
+#include "internaltask.h"
#include "objectfile.h"
#include "sourcefile.h"
using namespace std;
using namespace Msp;
-CompileCommandsGenerator::CompileCommandsGenerator(Builder &b):
- Tool(b, "CCJG")
-{ }
-
-Target *CompileCommandsGenerator::create_target(const list<Target *> &, const string &)
+Target *CompileCommandsGenerator::create_target(const vector<Target *> &, const string &)
{
throw logic_error("Not implemented");
}
Task *CompileCommandsGenerator::run(const Target &target) const
{
const CompileCommandsJson &cmds = dynamic_cast<const CompileCommandsJson &>(target);
- Worker *worker = new Worker(cmds);
- return new InternalTask(worker);
+ return new InternalTask([&cmds]{ return _run(cmds); });
}
-
-CompileCommandsGenerator::Worker::Worker(const CompileCommandsJson &t):
- target(t)
-{ }
-
-void CompileCommandsGenerator::Worker::main()
+bool CompileCommandsGenerator::_run(const CompileCommandsJson &cmds)
{
- Builder &builder = target.get_package()->get_builder();
- const SourcePackage &spkg = *target.get_package();
+ Builder &builder = cmds.get_package()->get_builder();
+ const SourcePackage &spkg = *cmds.get_package();
string work_dir = c_escape(spkg.get_source_directory().str());
- IO::BufferedFile out(target.get_path().str(), IO::M_WRITE);
+ IO::BufferedFile out(cmds.get_path().str(), IO::M_WRITE);
IO::print(out, "[");
bool first = true;
IO::print(out, "\n]\n");
- status = Task::SUCCESS;
+ return true;
}