#include "builder.h"
#include "compilecommandsgenerator.h"
#include "compilecommandsjson.h"
+#include "internaltask.h"
#include "objectfile.h"
#include "sourcefile.h"
using namespace std;
using namespace Msp;
-Target *CompileCommandsGenerator::create_target(const vector<Target *> &, const string &)
+CompileCommandsGenerator::CompileCommandsGenerator(Builder &b):
+ Tool(b, "CCJG")
{
- throw logic_error("Not implemented");
+ set_run_internal(_run);
}
-Task *CompileCommandsGenerator::run(const Target &target) const
+Target *CompileCommandsGenerator::create_target(const vector<Target *> &, const string &)
{
- const CompileCommandsJson &cmds = dynamic_cast<const CompileCommandsJson &>(target);
- Worker *worker = new Worker(cmds);
- return new InternalTask(worker);
+ throw logic_error("Not implemented");
}
-
-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;
}