1f7a47986Sopenharmony_ci/* 2f7a47986Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3f7a47986Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f7a47986Sopenharmony_ci * you may not use this file except in compliance with the License. 5f7a47986Sopenharmony_ci * You may obtain a copy of the License at 6f7a47986Sopenharmony_ci * 7f7a47986Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f7a47986Sopenharmony_ci * 9f7a47986Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10f7a47986Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f7a47986Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f7a47986Sopenharmony_ci * See the License for the specific language governing permissions and 13f7a47986Sopenharmony_ci * limitations under the License. 14f7a47986Sopenharmony_ci */ 15f7a47986Sopenharmony_ci 16f7a47986Sopenharmony_ci#include "shell_command.h" 17f7a47986Sopenharmony_ci 18f7a47986Sopenharmony_ci#include <getopt.h> 19f7a47986Sopenharmony_ci 20f7a47986Sopenharmony_ci#include "edm_log.h" 21f7a47986Sopenharmony_ci 22f7a47986Sopenharmony_cinamespace OHOS { 23f7a47986Sopenharmony_cinamespace EDM { 24f7a47986Sopenharmony_ciShellCommand::ShellCommand(int argc, char *argv[], std::string name) 25f7a47986Sopenharmony_ci{ 26f7a47986Sopenharmony_ci opterr = 0; 27f7a47986Sopenharmony_ci argc_ = argc; 28f7a47986Sopenharmony_ci argv_ = argv; 29f7a47986Sopenharmony_ci name_ = name; 30f7a47986Sopenharmony_ci 31f7a47986Sopenharmony_ci if (argc < MIN_ARGUMENT_NUMBER) { 32f7a47986Sopenharmony_ci cmd_ = "help"; 33f7a47986Sopenharmony_ci return; 34f7a47986Sopenharmony_ci } 35f7a47986Sopenharmony_ci cmd_ = argv[1]; 36f7a47986Sopenharmony_ci} 37f7a47986Sopenharmony_ci 38f7a47986Sopenharmony_ciErrCode ShellCommand::OnCommand() 39f7a47986Sopenharmony_ci{ 40f7a47986Sopenharmony_ci if (commandMap_.find("help") == commandMap_.end()) { 41f7a47986Sopenharmony_ci return ERR_INVALID_VALUE; 42f7a47986Sopenharmony_ci } 43f7a47986Sopenharmony_ci auto respond = commandMap_["help"]; 44f7a47986Sopenharmony_ci if (commandMap_.find(cmd_) != commandMap_.end()) { 45f7a47986Sopenharmony_ci respond = commandMap_[cmd_]; 46f7a47986Sopenharmony_ci } 47f7a47986Sopenharmony_ci if (Init() != ERR_OK) { 48f7a47986Sopenharmony_ci return ERR_INVALID_VALUE; 49f7a47986Sopenharmony_ci } 50f7a47986Sopenharmony_ci respond(); 51f7a47986Sopenharmony_ci return ERR_OK; 52f7a47986Sopenharmony_ci} 53f7a47986Sopenharmony_ci 54f7a47986Sopenharmony_cistd::string ShellCommand::ExecCommand() 55f7a47986Sopenharmony_ci{ 56f7a47986Sopenharmony_ci ErrCode result = CreateCommandMap(); 57f7a47986Sopenharmony_ci if (result != ERR_OK) { 58f7a47986Sopenharmony_ci EDMLOGE("failed to create command map.\n"); 59f7a47986Sopenharmony_ci } 60f7a47986Sopenharmony_ci 61f7a47986Sopenharmony_ci result = CreateMessageMap(); 62f7a47986Sopenharmony_ci if (result != ERR_OK) { 63f7a47986Sopenharmony_ci EDMLOGE("failed to create message map.\n"); 64f7a47986Sopenharmony_ci } 65f7a47986Sopenharmony_ci 66f7a47986Sopenharmony_ci result = OnCommand(); 67f7a47986Sopenharmony_ci if (result != ERR_OK) { 68f7a47986Sopenharmony_ci EDMLOGE("failed to execute your command.\n"); 69f7a47986Sopenharmony_ci resultReceiver_ = "error: failed to execute your command.\n"; 70f7a47986Sopenharmony_ci } 71f7a47986Sopenharmony_ci return resultReceiver_; 72f7a47986Sopenharmony_ci} 73f7a47986Sopenharmony_ci 74f7a47986Sopenharmony_cistd::string ShellCommand::GetMessageFromCode(int32_t code) const 75f7a47986Sopenharmony_ci{ 76f7a47986Sopenharmony_ci EDMLOGI("ShellCommand::GetMessageFromCode enter."); 77f7a47986Sopenharmony_ci 78f7a47986Sopenharmony_ci std::string result; 79f7a47986Sopenharmony_ci if (messageMap_.find(code) != messageMap_.end()) { 80f7a47986Sopenharmony_ci std::string message = messageMap_.at(code); 81f7a47986Sopenharmony_ci if (!message.empty()) { 82f7a47986Sopenharmony_ci result.append(message + "\n"); 83f7a47986Sopenharmony_ci } 84f7a47986Sopenharmony_ci } 85f7a47986Sopenharmony_ci return result; 86f7a47986Sopenharmony_ci} 87f7a47986Sopenharmony_ci} // namespace EDM 88f7a47986Sopenharmony_ci} // namespace OHOS 89