/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "HelpCommand.h" #include "Lshal.h" namespace android { namespace lshal { std::string HelpCommand::GetName() { return "help"; } std::string HelpCommand::getSimpleDescription() const { return "Print help message."; } Status HelpCommand::main(const Arg &arg) { if (optind >= arg.argc) { // `lshal help` prints global usage. mLshal.usage(); return OK; } (void)usageOfCommand(arg.argv[optind]); return OK; } Status HelpCommand::usageOfCommand(const std::string& c) const { if (c.empty()) { mLshal.usage(); return USAGE; } auto command = mLshal.selectCommand(c); if (command == nullptr) { // from HelpCommand::main, `lshal help unknown` mLshal.usage(); return USAGE; } command->usage(); return USAGE; } void HelpCommand::usage() const { mLshal.err() << "help:" << std::endl << " lshal -h" << std::endl << " lshal --help" << std::endl << " lshal help" << std::endl << " Print this help message" << std::endl; mLshal.forEachCommand([&](const Command* e) { mLshal.err() << " lshal help " << e->getName() << std::endl << " Print help message for " << e->getName() << std::endl; }); } } // namespace lshal } // namespace android