#include <msp/io/file.h>
#include <msp/io/print.h>
#include "builder.h"
+#include "internaltask.h"
#include "sourcepackage.h"
#include "vcxprojectfile.h"
#include "vssolutionfile.h"
using namespace std;
using namespace Msp;
-Target *VsSolutionGenerator::create_target(const vector<Target *> &, const string &)
+VsSolutionGenerator::VsSolutionGenerator(Builder &b):
+ Tool(b, "VSSG")
{
- throw logic_error("Not implemented");
+ set_run_internal(_run);
}
-Task *VsSolutionGenerator::run(const Target &target) const
+Target *VsSolutionGenerator::create_target(const vector<Target *> &, const string &)
{
- const VsSolutionFile &solution = dynamic_cast<const VsSolutionFile &>(target);
- Worker *worker = new Worker(solution);
- return new InternalTask(worker);
+ throw logic_error("Not implemented");
}
-
-void VsSolutionGenerator::Worker::main()
+bool VsSolutionGenerator::_run(const VsSolutionFile &solution)
{
- const SourcePackage &spkg = *target.get_package();
+ const SourcePackage &spkg = *solution.get_package();
Builder &builder = spkg.get_builder();
- IO::BufferedFile out(target.get_path().str(), IO::M_WRITE);
+ IO::BufferedFile out(solution.get_path().str(), IO::M_WRITE);
IO::print(out, "Microsoft Visual Studio Solution File, Format Version 12.00\n");
IO::print(out, "MinimumVisualStudioVersion = 10.0.40219.1\n");
vector<const VcxProjectFile *> projects;
- for(const Target *t: target.get_dependencies())
+ for(const Target *t: solution.get_dependencies())
if(const VcxProjectFile *project = dynamic_cast<const VcxProjectFile *>(t))
projects.push_back(project);
IO::print(out, "\tEndGlobalSection\n");
IO::print(out, "EndGlobal\n");
- status = Task::SUCCESS;
+ return true;
}