16f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski/* 26f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Copyright (C) 2015 The Android Open Source Project 36f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 46f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 56f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * you may not use this file except in compliance with the License. 66f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * You may obtain a copy of the License at 76f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 86f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 96f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * 106f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * Unless required by applicable law or agreed to in writing, software 116f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 126f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * See the License for the specific language governing permissions and 146f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski * limitations under the License. 156f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski */ 166f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 171ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski#include "util/StringPiece.h" 186f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 196f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski#include <iostream> 201ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski#include <vector> 216f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 221ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinskinamespace aapt { 235886a92eb6dde5a406a62926f2914a908ca18d35Adam Lesinski 241ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinskiextern int compile(const std::vector<StringPiece>& args); 251ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinskiextern int link(const std::vector<StringPiece>& args); 2659e04c6f92da584b322c87072f18e6cab4de4c60Adam Lesinskiextern int dump(const std::vector<StringPiece>& args); 27458b877488c12ea4336d8fc00a95d9c0298bd6d0Adam Lesinskiextern int diff(const std::vector<StringPiece>& args); 286f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 291ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski} // namespace aapt 30330edcdf1316ed599fe0eb16a64330821fd92f18Adam Lesinski 316f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinskiint main(int argc, char** argv) { 321ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski if (argc >= 2) { 331ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski argv += 1; 341ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski argc -= 1; 356f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 361ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski std::vector<aapt::StringPiece> args; 371ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski for (int i = 1; i < argc; i++) { 381ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski args.push_back(argv[i]); 396f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski } 406f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 411ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski aapt::StringPiece command(argv[0]); 421ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski if (command == "compile" || command == "c") { 431ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski return aapt::compile(args); 441ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski } else if (command == "link" || command == "l") { 451ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski return aapt::link(args); 4659e04c6f92da584b322c87072f18e6cab4de4c60Adam Lesinski } else if (command == "dump" || command == "d") { 4759e04c6f92da584b322c87072f18e6cab4de4c60Adam Lesinski return aapt::dump(args); 48458b877488c12ea4336d8fc00a95d9c0298bd6d0Adam Lesinski } else if (command == "diff") { 49458b877488c12ea4336d8fc00a95d9c0298bd6d0Adam Lesinski return aapt::diff(args); 506cc479b76e9e2e8858434302e1ef2d514ed1b0ecAdam Lesinski } 511ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski std::cerr << "unknown command '" << command << "'\n"; 526f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski } else { 531ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski std::cerr << "no command specified\n"; 546f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski } 556f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski 56458b877488c12ea4336d8fc00a95d9c0298bd6d0Adam Lesinski std::cerr << "\nusage: aapt2 [compile|link|dump|diff] ..." << std::endl; 571ab598f46c3ff520a67f9d80194847741f3467abAdam Lesinski return 1; 586f6ceb7e1456698b1f33e04536bfb3227f9fcfcbAdam Lesinski} 59