/* * Copyright (C) 2019 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. */ #ifndef FRAMEWORK_NATIVE_CMDS_IDLCLI_IDLCLI_H_ #define FRAMEWORK_NATIVE_CMDS_IDLCLI_IDLCLI_H_ #include "utils.h" namespace android { namespace idlcli { class IdlCli : public CommandWithSubcommands { std::string getDescription() const override { return "Invoke IDL APIs."; } std::string getUsageSummary() const override { return " [options] [arguments]"; } UsageDetails getUsageDetails() const override { UsageDetails details{ {"-n ", {"Get named service, rather than default."}}, {"", CommandRegistry::List()}, }; return details; } Status doArgs(Args &args) override { while (args.get().value_or("").find("-") == 0) { auto opt = *args.pop(); if (opt == "--") { break; } else if (opt == "-n") { if (auto name = args.pop()) { mName = *name; } else { std::cerr << "Missing Value for Name!" << std::endl; return USAGE; } } else { std::cerr << "Invalid Option '" << opt << "'!" << std::endl; return USAGE; } } return CommandWithSubcommands::doArgs(args); } IdlCli() {} std::string mName; public: static IdlCli &Get() { static IdlCli instance; return instance; } auto getName() { return mName; } }; } // namespace idlcli } // namespace android #endif // FRAMEWORK_NATIVE_CMDS_IDLCLI_IDLCLI_H_