Merge "Added a daemon mode to aapt to receive streams of commands from gradle." into lmp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f47f885517
@@ -40,6 +40,7 @@ typedef enum Command {
|
||||
kCommandPackage,
|
||||
kCommandCrunch,
|
||||
kCommandSingleCrunch,
|
||||
kCommandDaemon
|
||||
} Command;
|
||||
|
||||
/*
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
using namespace android;
|
||||
|
||||
#ifndef AAPT_VERSION
|
||||
@@ -2506,6 +2510,37 @@ int doSingleCrunch(Bundle* bundle)
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
int runInDaemonMode(Bundle* bundle) {
|
||||
std::cout << "Ready" << std::endl;
|
||||
for (std::string line; std::getline(std::cin, line);) {
|
||||
if (line == "quit") {
|
||||
return NO_ERROR;
|
||||
}
|
||||
std::stringstream ss;
|
||||
ss << line;
|
||||
std::string s;
|
||||
|
||||
std::string command, parameterOne, parameterTwo;
|
||||
std::getline(ss, command, ' ');
|
||||
std::getline(ss, parameterOne, ' ');
|
||||
std::getline(ss, parameterTwo, ' ');
|
||||
if (command[0] == 's') {
|
||||
bundle->setSingleCrunchInputFile(parameterOne.c_str());
|
||||
bundle->setSingleCrunchOutputFile(parameterTwo.c_str());
|
||||
std::cout << "Crunching " << parameterOne << std::endl;
|
||||
if (doSingleCrunch(bundle) != NO_ERROR) {
|
||||
std::cout << "Error" << std::endl;
|
||||
}
|
||||
std::cout << "Done" << std::endl;
|
||||
} else {
|
||||
// in case of invalid command, just bail out.
|
||||
std::cerr << "Unknown command" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
char CONSOLE_DATA[2925] = {
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 95, 46, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
|
||||
@@ -234,6 +234,7 @@ int handleCommand(Bundle* bundle)
|
||||
case kCommandPackage: return doPackage(bundle);
|
||||
case kCommandCrunch: return doCrunch(bundle);
|
||||
case kCommandSingleCrunch: return doSingleCrunch(bundle);
|
||||
case kCommandDaemon: return runInDaemonMode(bundle);
|
||||
default:
|
||||
fprintf(stderr, "%s: requested command not yet supported\n", gProgName);
|
||||
return 1;
|
||||
@@ -275,6 +276,8 @@ int main(int argc, char* const argv[])
|
||||
bundle.setCommand(kCommandCrunch);
|
||||
else if (argv[1][0] == 's')
|
||||
bundle.setCommand(kCommandSingleCrunch);
|
||||
else if (argv[1][0] == 'm')
|
||||
bundle.setCommand(kCommandDaemon);
|
||||
else {
|
||||
fprintf(stderr, "ERROR: Unknown command '%s'\n", argv[1]);
|
||||
wantUsage = true;
|
||||
|
||||
@@ -36,6 +36,7 @@ extern int doRemove(Bundle* bundle);
|
||||
extern int doPackage(Bundle* bundle);
|
||||
extern int doCrunch(Bundle* bundle);
|
||||
extern int doSingleCrunch(Bundle* bundle);
|
||||
extern int runInDaemonMode(Bundle* bundle);
|
||||
|
||||
extern int calcPercent(long uncompressedLen, long compressedLen);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user