mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-25 12:23:20 -04:00
3ff85f3ee7
Change-Id: Idd85277146808e788fe6671f4b8e80b0bc608bbf Signed-off-by: RuiChen_01 <chenrui193@huawei.com> Co-Authored-By: Agent update: 更新文件 BUILD.gn 删除导致编译报错的部件 Signed-off-by: RuiChen_01 <chenrui193@huawei.com> support cli tool cc Co-Authored-By: Agent Signed-off-by: RuiChen_01 <chenrui193@huawei.com>
181 lines
8.1 KiB
C++
181 lines
8.1 KiB
C++
/*
|
|
* Copyright (c) 2021-2025 Huawei Device Co., Ltd.
|
|
* 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 OHOS_ABILITY_RUNTIME_CC_COMMAND_H
|
|
#define OHOS_ABILITY_RUNTIME_CC_COMMAND_H
|
|
|
|
#include <nlohmann/json.hpp>
|
|
|
|
#include "ability_manager_interface.h"
|
|
#include "cc_param_parser.h"
|
|
#include "insight_intent/insight_intent_info_for_query.h"
|
|
#include "shell_command.h"
|
|
|
|
namespace OHOS {
|
|
namespace AAFwk {
|
|
namespace {
|
|
const std::string TOOL_NAME = "ohos-claw-cc";
|
|
|
|
const std::string HELP_MSG =
|
|
"ohos-claw-cc - InsightIntent framework CLI tool for executing and querying insight intents\n"
|
|
"\n"
|
|
"Usage:\n"
|
|
" ohos-claw-cc <command> [options]\n"
|
|
"\n"
|
|
"Parameters:\n"
|
|
" --help Display this help message\n"
|
|
"\n"
|
|
"SubCommands:\n"
|
|
" execute-intent Execute an insight intent and return the result\n"
|
|
" get-intent Query insight intent registration information\n"
|
|
"\n"
|
|
"Examples:\n"
|
|
" ohos-claw-cc execute-intent --bundleName com.example --moduleName entry --intentName MyIntent\n"
|
|
" ohos-claw-cc get-intent --executeMode 1 --flag 1\n";
|
|
|
|
const std::string HELP_MSG_EXECUTE_INTENT =
|
|
"ohos-claw-cc execute-intent - Execute an insight intent synchronously and return the result\n"
|
|
"\n"
|
|
"Usage:\n"
|
|
" ohos-claw-cc execute-intent [options]\n"
|
|
"\n"
|
|
"Parameters:\n"
|
|
" --bundleName <name> Target application bundle name (required)\n"
|
|
" --moduleName <name> Module name within the bundle (required)\n"
|
|
" --intentName <name> Insight intent name to execute (required)\n"
|
|
" --abilityName <name> Ability name (required, pass empty string '' if not needed)\n"
|
|
" --executeMode <mode> Execute mode (required, range: 0-3)\n"
|
|
" 0=UI_ABILITY_FOREGROUND, 1=UI_ABILITY_BACKGROUND,\n"
|
|
" 2=UI_EXTENSION_ABILITY, 3=SERVICE_EXTENSION_ABILITY\n"
|
|
" --param <json> Intent parameters as JSON string (required, pass '{}' if not needed)\n"
|
|
" For link-type intents, include \"uri\" field in JSON, e.g.\n"
|
|
" '{\"uri\":\"https://example.com/page\",\"key\":\"value\"}'\n"
|
|
" --help Display this help message\n"
|
|
"\n"
|
|
"Examples:\n"
|
|
" ohos-claw-cc execute-intent --bundleName com.example --moduleName entry --intentName MyIntent\n"
|
|
"\n"
|
|
" ohos-claw-cc execute-intent --bundleName com.example --moduleName entry\n"
|
|
" --intentName MyIntent --executeMode 0 --param '{\"key1\":\"value1\"}'\n";
|
|
|
|
const std::string HELP_MSG_GET_INTENT =
|
|
"ohos-claw-cc get-intent - Query insight intent registration information\n"
|
|
"\n"
|
|
"Usage:\n"
|
|
" ohos-claw-cc get-intent [options]\n"
|
|
"\n"
|
|
"Parameters:\n"
|
|
" --executeMode <mode> Query mode (required, values: 1-3)\n"
|
|
" 1=query all, 2=query by bundle, 3=query by intent name\n"
|
|
" --flag <flag> Query flag (required, values: 1, 2, 5, 6)\n"
|
|
" 1=GET_FULL_INSIGHT_INTENT, 2=GET_SUMMARY_INSIGHT_INTENT,\n"
|
|
" 5=FULL+ENTITY_INFO, 6=SUMMARY+ENTITY_INFO\n"
|
|
" --bundleName <name> Bundle name (required when executeMode is 2 or 3)\n"
|
|
" --moduleName <name> Module name (required when executeMode is 3)\n"
|
|
" --intentName <name> Intent name (required when executeMode is 3)\n"
|
|
" --help Display this help message\n"
|
|
"\n"
|
|
"Examples:\n"
|
|
" ohos-claw-cc get-intent --executeMode 1 --flag 1\n"
|
|
"\n"
|
|
" ohos-claw-cc get-intent --executeMode 2 --flag 1 --bundleName com.example.bundle\n"
|
|
"\n"
|
|
" ohos-claw-cc get-intent --executeMode 3 --flag 1\n"
|
|
" --bundleName com.example.bundle --moduleName entry --intentName MyIntent\n";
|
|
} // namespace
|
|
|
|
class InsightIntentShellCommand : public ShellCommand {
|
|
public:
|
|
InsightIntentShellCommand(int argc, char* argv[]);
|
|
~InsightIntentShellCommand() override = default;
|
|
|
|
ErrCode CreateMessageMap() override;
|
|
|
|
private:
|
|
ErrCode CreateCommandMap() override;
|
|
ErrCode init() override;
|
|
|
|
ErrCode RunAsHelpCommand();
|
|
ErrCode RunAsExecuteIntentCommand();
|
|
ErrCode RunAsGetIntentCommand();
|
|
|
|
ErrCode ParseExecuteIntentOptions(std::string &bundleName, std::string &moduleName,
|
|
std::string &abilityName, std::string &insightIntentName,
|
|
std::string &intentParamJson, int32_t &executeMode);
|
|
ErrCode HandleExecuteIntentOption(int option, std::string &bundleName,
|
|
std::string &moduleName, std::string &abilityName,
|
|
std::string &insightIntentName, std::string &intentParamJson,
|
|
int32_t &executeMode);
|
|
ErrCode CheckRequiredExecuteParams(const std::string &bundleName,
|
|
const std::string &moduleName,
|
|
const std::string &insightIntentName);
|
|
ErrCode CheckAllExecuteParams(const std::string &bundleName,
|
|
const std::string &moduleName,
|
|
const std::string &insightIntentName,
|
|
const std::string &abilityName, int32_t executeMode,
|
|
const std::string &intentParamJson);
|
|
ErrCode ValidateGetIntentParams(int32_t flag, int32_t executeMode);
|
|
ErrCode ValidateIntentFromDatabase(const std::string &bundleName,
|
|
const std::string &moduleName,
|
|
const std::string &insightIntentName,
|
|
AbilityRuntime::InsightIntentInfoForQuery &queryInfo);
|
|
int8_t ConvertIntentTypeToDecoratorType(const std::string &intentType);
|
|
void BuildExecuteParam(InsightIntentExecuteParam ¶m,
|
|
const std::string &bundleName, const std::string &moduleName,
|
|
const std::string &abilityName, const std::string &insightIntentName,
|
|
int32_t executeMode, const std::string &intentType,
|
|
const std::string &intentParamJson);
|
|
ErrCode ExecuteIntentWithParam(const InsightIntentExecuteParam ¶m);
|
|
void AppendExecuteResult(const InsightIntentExecuteResult &executeResult);
|
|
|
|
ErrCode ParseGetIntentOptions(int32_t &flag, int32_t &executeMode,
|
|
std::string &bundleName,
|
|
std::string &moduleName, std::string &intentName);
|
|
ErrCode HandleGetIntentOption(int option, int32_t &flag,
|
|
int32_t &executeMode, std::string &bundleName,
|
|
std::string &moduleName, std::string &intentName);
|
|
ErrCode DispatchGetIntentMode(int32_t executeMode, int32_t flag,
|
|
const std::string &bundleName,
|
|
const std::string &moduleName, const std::string &intentName);
|
|
ErrCode RunGetIntentModeAll(int32_t flag);
|
|
ErrCode RunGetIntentModeByBundle(int32_t flag,
|
|
const std::string &bundleName);
|
|
ErrCode RunGetIntentModeByIntent(int32_t flag,
|
|
const std::string &bundleName, const std::string &moduleName,
|
|
const std::string &intentName);
|
|
|
|
ErrCode ParseIntOption(const char *arg, int32_t &value);
|
|
bool ShouldAppendEntityInfo(int32_t flag) const;
|
|
bool IsFullInfo(int32_t flag) const;
|
|
ErrCode ValidateExecuteMode(int32_t executeMode);
|
|
|
|
void AppendResultEvent(const nlohmann::json &data);
|
|
void AppendErrorEvent(const std::string &errCode,
|
|
const std::string &errMsg, const std::string &suggestion);
|
|
nlohmann::json BuildIntentInfoListJson(
|
|
const std::vector<AbilityRuntime::InsightIntentInfoForQuery> &infos,
|
|
int32_t flag);
|
|
nlohmann::json BuildIntentInfoJson(
|
|
const AbilityRuntime::InsightIntentInfoForQuery &info, int32_t flag);
|
|
nlohmann::json BuildEntityJson(
|
|
const AbilityRuntime::EntityInfoForQuery &entity);
|
|
nlohmann::json CollectSupportedModesJson(
|
|
const AbilityRuntime::InsightIntentInfoForQuery &queryInfo);
|
|
};
|
|
} // namespace AAFwk
|
|
} // namespace OHOS
|
|
|
|
#endif // OHOS_ABILITY_RUNTIME_CC_COMMAND_H
|