]> git.tdb.fi Git - builder.git/blobdiff - source/androidassetpackagingtool.cpp
Refactor the use of external tasks in tools
[builder.git] / source / androidassetpackagingtool.cpp
index af8bc95ea422187112d5dce75927d8567803d309..eb638e96d6fb01763732c267d2e70b08d8cae588 100644 (file)
@@ -5,7 +5,6 @@
 #include "androidresourcebundle.h"
 #include "androidtools.h"
 #include "component.h"
-#include "externaltask.h"
 #include "sourcepackage.h"
 
 using namespace std;
@@ -24,6 +23,8 @@ AndroidAssetPackagingTool::AndroidAssetPackagingTool(Builder &b, const AndroidSd
 
        if(sdk.get_platform_jar().empty())
                problems.push_back("Android platform not found");
+
+       set_run_external(_run);
 }
 
 Target *AndroidAssetPackagingTool::create_target(const vector<Target *> &sources, const string &)
@@ -47,18 +48,16 @@ Target *AndroidAssetPackagingTool::create_target(const vector<Target *> &sources
        return res;
 }
 
-Task *AndroidAssetPackagingTool::run(const Target &tgt) const
+ExternalTask::Arguments AndroidAssetPackagingTool::_run(const AndroidResourceBundle &res, FS::Path &work_dir)
 {
-       const AndroidResourceBundle &res = dynamic_cast<const AndroidResourceBundle &>(tgt);
+       const AndroidAssetPackagingTool &tool = dynamic_cast<const AndroidAssetPackagingTool &>(*res.get_tool());
 
        ExternalTask::Arguments argv;
-       argv.push_back(executable->get_path().str());
+       argv.push_back(tool.get_executable()->get_path().str());
        argv.push_back("package");
 
-       FS::Path work_dir = res.get_component()->get_package().get_source_directory();
-
        argv.push_back("-I");
-       argv.push_back(sdk.get_platform_jar().str());
+       argv.push_back(tool.sdk.get_platform_jar().str());
 
        argv.push_back("-F");
        argv.push_back(FS::relative(res.get_path(), work_dir).str());
@@ -90,5 +89,5 @@ Task *AndroidAssetPackagingTool::run(const Target &tgt) const
                argv.push_back(FS::relative(d, work_dir).str());
        }
 
-       return new ExternalTask(argv, work_dir);
+       return argv;
 }