| Adam Lesinski | 6f6ceb7 | 2014-11-14 14:48:12 -0800 | [diff] [blame] | 1 | /* | 
 | 2 |  * Copyright (C) 2015 The Android Open Source Project | 
 | 3 |  * | 
 | 4 |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
 | 5 |  * you may not use this file except in compliance with the License. | 
 | 6 |  * You may obtain a copy of the License at | 
 | 7 |  * | 
 | 8 |  *      http://www.apache.org/licenses/LICENSE-2.0 | 
 | 9 |  * | 
 | 10 |  * Unless required by applicable law or agreed to in writing, software | 
 | 11 |  * distributed under the License is distributed on an "AS IS" BASIS, | 
 | 12 |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | 13 |  * See the License for the specific language governing permissions and | 
 | 14 |  * limitations under the License. | 
 | 15 |  */ | 
 | 16 |  | 
| Adam Lesinski | 6f6ceb7 | 2014-11-14 14:48:12 -0800 | [diff] [blame] | 17 | #include <iostream> | 
| Adam Lesinski | 1ab598f | 2015-08-14 14:26:04 -0700 | [diff] [blame] | 18 | #include <vector> | 
| Adam Lesinski | 6f6ceb7 | 2014-11-14 14:48:12 -0800 | [diff] [blame] | 19 |  | 
| Adam Lesinski | d5083f6 | 2017-01-16 15:07:21 -0800 | [diff] [blame] | 20 | #include "androidfw/StringPiece.h" | 
| Adam Lesinski | ce5e56e | 2016-10-21 17:56:45 -0700 | [diff] [blame] | 21 |  | 
| Chris Warrington | 820d72a | 2017-04-27 15:27:01 +0100 | [diff] [blame] | 22 | #include "Diagnostics.h" | 
 | 23 |  | 
| Adam Lesinski | 1ab598f | 2015-08-14 14:26:04 -0700 | [diff] [blame] | 24 | namespace aapt { | 
| Adam Lesinski | 5886a92 | 2015-04-15 20:29:22 -0700 | [diff] [blame] | 25 |  | 
| Adam Lesinski | 0368ebf | 2016-07-26 12:55:51 -0700 | [diff] [blame] | 26 | // DO NOT UPDATE, this is more of a marketing version. | 
 | 27 | static const char* sMajorVersion = "2"; | 
 | 28 |  | 
 | 29 | // Update minor version whenever a feature or flag is added. | 
| Adam Lesinski | 28e6c0b | 2017-05-10 14:56:36 -0700 | [diff] [blame] | 30 | static const char* sMinorVersion = "15"; | 
| Adam Lesinski | 0368ebf | 2016-07-26 12:55:51 -0700 | [diff] [blame] | 31 |  | 
| Adam Lesinski | ce5e56e | 2016-10-21 17:56:45 -0700 | [diff] [blame] | 32 | int PrintVersion() { | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 33 |   std::cerr << "Android Asset Packaging Tool (aapt) " << sMajorVersion << "." | 
 | 34 |             << sMinorVersion << std::endl; | 
 | 35 |   return 0; | 
| Adam Lesinski | 0368ebf | 2016-07-26 12:55:51 -0700 | [diff] [blame] | 36 | } | 
 | 37 |  | 
| Chris Warrington | 820d72a | 2017-04-27 15:27:01 +0100 | [diff] [blame] | 38 | extern int Compile(const std::vector<android::StringPiece>& args, IDiagnostics* diagnostics); | 
 | 39 | extern int Link(const std::vector<android::StringPiece>& args, IDiagnostics* diagnostics); | 
| Adam Lesinski | d5083f6 | 2017-01-16 15:07:21 -0800 | [diff] [blame] | 40 | extern int Dump(const std::vector<android::StringPiece>& args); | 
 | 41 | extern int Diff(const std::vector<android::StringPiece>& args); | 
| Adam Lesinski | d48944a | 2017-02-21 14:22:30 -0800 | [diff] [blame] | 42 | extern int Optimize(const std::vector<android::StringPiece>& args); | 
| Adam Lesinski | 6f6ceb7 | 2014-11-14 14:48:12 -0800 | [diff] [blame] | 43 |  | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 44 | }  // namespace aapt | 
| Adam Lesinski | 330edcd | 2015-05-04 17:40:56 -0700 | [diff] [blame] | 45 |  | 
| Adam Lesinski | 6f6ceb7 | 2014-11-14 14:48:12 -0800 | [diff] [blame] | 46 | int main(int argc, char** argv) { | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 47 |   if (argc >= 2) { | 
 | 48 |     argv += 1; | 
 | 49 |     argc -= 1; | 
| Adam Lesinski | 6f6ceb7 | 2014-11-14 14:48:12 -0800 | [diff] [blame] | 50 |  | 
| Adam Lesinski | d5083f6 | 2017-01-16 15:07:21 -0800 | [diff] [blame] | 51 |     std::vector<android::StringPiece> args; | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 52 |     for (int i = 1; i < argc; i++) { | 
 | 53 |       args.push_back(argv[i]); | 
| Adam Lesinski | 6f6ceb7 | 2014-11-14 14:48:12 -0800 | [diff] [blame] | 54 |     } | 
 | 55 |  | 
| Adam Lesinski | d5083f6 | 2017-01-16 15:07:21 -0800 | [diff] [blame] | 56 |     android::StringPiece command(argv[0]); | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 57 |     if (command == "compile" || command == "c") { | 
| Chris Warrington | 820d72a | 2017-04-27 15:27:01 +0100 | [diff] [blame] | 58 |       aapt::StdErrDiagnostics diagnostics; | 
 | 59 |       return aapt::Compile(args, &diagnostics); | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 60 |     } else if (command == "link" || command == "l") { | 
| Chris Warrington | 820d72a | 2017-04-27 15:27:01 +0100 | [diff] [blame] | 61 |       aapt::StdErrDiagnostics diagnostics; | 
 | 62 |       return aapt::Link(args, &diagnostics); | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 63 |     } else if (command == "dump" || command == "d") { | 
| Adam Lesinski | ce5e56e | 2016-10-21 17:56:45 -0700 | [diff] [blame] | 64 |       return aapt::Dump(args); | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 65 |     } else if (command == "diff") { | 
| Adam Lesinski | ce5e56e | 2016-10-21 17:56:45 -0700 | [diff] [blame] | 66 |       return aapt::Diff(args); | 
| Adam Lesinski | d48944a | 2017-02-21 14:22:30 -0800 | [diff] [blame] | 67 |     } else if (command == "optimize") { | 
 | 68 |       return aapt::Optimize(args); | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 69 |     } else if (command == "version") { | 
| Adam Lesinski | ce5e56e | 2016-10-21 17:56:45 -0700 | [diff] [blame] | 70 |       return aapt::PrintVersion(); | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 71 |     } | 
 | 72 |     std::cerr << "unknown command '" << command << "'\n"; | 
 | 73 |   } else { | 
 | 74 |     std::cerr << "no command specified\n"; | 
 | 75 |   } | 
 | 76 |  | 
| Adam Lesinski | d48944a | 2017-02-21 14:22:30 -0800 | [diff] [blame] | 77 |   std::cerr << "\nusage: aapt2 [compile|link|dump|diff|optimize|version] ..." | 
| Adam Lesinski | cacb28f | 2016-10-19 12:18:14 -0700 | [diff] [blame] | 78 |             << std::endl; | 
 | 79 |   return 1; | 
| Adam Lesinski | 6f6ceb7 | 2014-11-14 14:48:12 -0800 | [diff] [blame] | 80 | } |