1 /* 2 * Copyright (C) 2017 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 17 #include "HelpCommand.h" 18 19 #include "Lshal.h" 20 21 namespace android { 22 namespace lshal { 23 GetName()24std::string HelpCommand::GetName() { 25 return "help"; 26 } 27 getSimpleDescription() const28std::string HelpCommand::getSimpleDescription() const { 29 return "Print help message."; 30 } 31 main(const Arg & arg)32Status HelpCommand::main(const Arg &arg) { 33 if (optind >= arg.argc) { 34 // `lshal help` prints global usage. 35 mLshal.usage(); 36 return OK; 37 } 38 (void)usageOfCommand(arg.argv[optind]); 39 return OK; 40 } 41 usageOfCommand(const std::string & c) const42Status HelpCommand::usageOfCommand(const std::string& c) const { 43 if (c.empty()) { 44 mLshal.usage(); 45 return USAGE; 46 } 47 auto command = mLshal.selectCommand(c); 48 if (command == nullptr) { 49 // from HelpCommand::main, `lshal help unknown` 50 mLshal.usage(); 51 return USAGE; 52 } 53 54 command->usage(); 55 return USAGE; 56 57 } 58 usage() const59void HelpCommand::usage() const { 60 mLshal.err() 61 << "help:" << std::endl 62 << " lshal -h" << std::endl 63 << " lshal --help" << std::endl 64 << " lshal help" << std::endl 65 << " Print this help message" << std::endl; 66 mLshal.forEachCommand([&](const Command* e) { 67 mLshal.err() << " lshal help " << e->getName() << std::endl 68 << " Print help message for " << e->getName() << std::endl; 69 }); 70 71 } 72 73 } // namespace lshal 74 } // namespace android 75 76