]> git.tdb.fi Git - builder.git/blob - source/jarsigner.cpp
Redesign how tools are run
[builder.git] / source / jarsigner.cpp
1 #include <msp/core/environ.h>
2 #include <msp/fs/utils.h>
3 #include "component.h"
4 #include "externaltask.h"
5 #include "filetarget.h"
6 #include "jarsigner.h"
7 #include "sourcepackage.h"
8
9 using namespace std;
10 using namespace Msp;
11
12 JarSigner::JarSigner(Builder &b):
13         Tool(b, "JSGN")
14 {
15         set_command("jarsigner");
16         set_run(_run);
17 }
18
19 Target *JarSigner::create_target(const vector<Target *> &, const string &)
20 {
21         throw logic_error("not implemented");
22 }
23
24 Task *JarSigner::_run(const FileTarget &file)
25 {
26         const Tool &tool = *file.get_tool();
27
28         ExternalTask::Arguments argv;
29         argv.push_back(tool.get_executable()->get_path().str());
30
31         // TODO Make this generic
32         FS::Path home_dir = Msp::getenv("HOME");
33         argv.push_back("-keystore");
34         argv.push_back((home_dir/".android"/"debug.keystore").str());
35         argv.push_back("-storepass");
36         argv.push_back("android");
37
38         FS::Path work_dir = file.get_component()->get_package().get_source_directory();
39
40         argv.push_back(FS::relative(file.get_path(), work_dir).str());
41         argv.push_back("androiddebugkey");
42
43         return new ExternalTask(argv, work_dir);
44 }