oeAware-manager/0004-InfocmdHandler-add-the-display-of-running-status.patch
fly_1997 53f40f4bdd fix issues
(cherry picked from commit f6c5fd1c997b0a246eddb00281382a37ddfad383)
2025-03-10 15:01:03 +08:00

131 lines
5.8 KiB
Diff

From 35477f607907bfdbe0b312c31d8770e7e858548f Mon Sep 17 00:00:00 2001
From: ye yiyang <850219375@qq.com>
Date: Fri, 7 Mar 2025 11:22:57 +0800
Subject: [PATCH 3/3] InfocmdHandler add the display of running status
---
src/plugin_mgr/event/info_cmd_handler.cpp | 53 +++++++++++++----------
src/plugin_mgr/event/info_cmd_handler.h | 2 +
src/plugin_mgr/plugin.cpp | 6 +++
src/plugin_mgr/plugin.h | 1 +
4 files changed, 39 insertions(+), 23 deletions(-)
diff --git a/src/plugin_mgr/event/info_cmd_handler.cpp b/src/plugin_mgr/event/info_cmd_handler.cpp
index 2d9f72d..8b8dc8c 100644
--- a/src/plugin_mgr/event/info_cmd_handler.cpp
+++ b/src/plugin_mgr/event/info_cmd_handler.cpp
@@ -98,6 +98,34 @@ std::vector<std::string> wrapText(const std::string& text, size_t width)
return wrapped;
}
+void InfoCmdHandler::FormatAndPrint(const std::string& instanceName, const std::string& description,
+ const std::string& effect, std::ostringstream &formattedRes)
+{
+ auto instanceNames = wrapText(instanceName, instanceWidth);
+ auto descriptions = wrapText(description, descriptionWidth);
+ auto effects = wrapText(effect, effectWidth);
+ size_t maxLines = std::max({descriptions.size(), effects.size(), static_cast<size_t>(1)});
+ for (size_t j = 0; j < maxLines; ++j) {
+ if (j < instanceNames.size()) {
+ formattedRes << std::left << std::setw(instanceWidth) << instanceNames[j];
+ } else {
+ formattedRes << std::left << std::setw(instanceWidth) << "";
+ }
+ if (j < descriptions.size()) {
+ formattedRes << "|" << std::setw(descriptionWidth) << descriptions[j];
+ } else {
+ formattedRes << "|" << std::setw(descriptionWidth) << "";
+ }
+ if (j < effects.size()) {
+ formattedRes << "|" << std::setw(effectWidth) << effects[j];
+ } else {
+ formattedRes << "|" << std::setw(effectWidth) << "";
+ }
+ formattedRes << "\n";
+ }
+ formattedRes << std::string(instanceWidth + 1 + descriptionWidth + 1 + effectWidth, '-') << "\n";
+}
+
ErrorCode InfoCmdHandler::AddList(std::string &res)
{
std::vector<std::shared_ptr<Plugin>> allPlugins = memoryStore->GetAllPlugins();
@@ -119,31 +147,10 @@ ErrorCode InfoCmdHandler::AddList(std::string &res)
for (size_t i = 0; i < p->GetInstanceLen(); ++i) {
auto instance = p->GetInstance(i);
auto infoPartner = GetInfo(instance->GetName());
- std::string instanceName = infoPartner.instance;
+ std::string instanceName = instance->GetRun();
std::string description = infoPartner.description;
std::string effect = infoPartner.effect;
- auto descriptions = wrapText(description, descriptionWidth);
- auto effects = wrapText(effect, effectWidth);
- size_t maxLines = std::max({descriptions.size(), effects.size(), static_cast<size_t>(1)});
- formattedRes << std::left << std::setw(instanceWidth) << instanceName;
- formattedRes << "|" << std::setw(descriptionWidth) << descriptions[0];
- formattedRes << "|" << std::setw(effectWidth) << effects[0];
- formattedRes << "\n";
- for (size_t j = 1; j < maxLines; ++j) {
- formattedRes << std::left << std::setw(instanceWidth) << "";
- if (j < descriptions.size()) {
- formattedRes << "|" << std::setw(descriptionWidth) << descriptions[j];
- } else {
- formattedRes << "|" << std::setw(descriptionWidth) << "";
- }
- if (j < effects.size()) {
- formattedRes << "|" << std::setw(effectWidth) << effects[j];
- } else {
- formattedRes << "|" << std::setw(effectWidth) << "";
- }
- formattedRes << "\n";
- }
- formattedRes << std::string(instanceWidth + 1 + descriptionWidth + 1 + effectWidth, '-') << "\n";
+ FormatAndPrint(instanceName, description, effect, formattedRes);
}
}
res = formattedRes.str();
diff --git a/src/plugin_mgr/event/info_cmd_handler.h b/src/plugin_mgr/event/info_cmd_handler.h
index 9ecc246..8eeec2e 100644
--- a/src/plugin_mgr/event/info_cmd_handler.h
+++ b/src/plugin_mgr/event/info_cmd_handler.h
@@ -26,6 +26,8 @@ public:
EventResult Handle(const Event &event) override;
InfoCmd GetInfo(const std::string& name);
bool CreateInfoCmdInstances(const std::string& filePath, std::vector<InfoCmd>& infoCmds);
+ void FormatAndPrint(const std::string& instanceName, const std::string& description,
+ const std::string& effect, std::ostringstream &formattedRes);
private:
ErrorCode AddList(std::string &res);
std::vector<InfoCmd> infoCmd;
diff --git a/src/plugin_mgr/plugin.cpp b/src/plugin_mgr/plugin.cpp
index ed666cb..2dde7e0 100644
--- a/src/plugin_mgr/plugin.cpp
+++ b/src/plugin_mgr/plugin.cpp
@@ -75,6 +75,12 @@ std::string Instance::GetInfo() const
return name + "(" + stateText + ", " + runText + ", count: " + std::to_string(enableCnt) + ")";
}
+std::string Instance::GetRun() const
+{
+ std::string runText = this->enabled ? pluginEnabled : pluginDisabled;
+ return name + " (" + runText + ")";
+}
+
std::string Instance::GetName() const
{
return name;
diff --git a/src/plugin_mgr/plugin.h b/src/plugin_mgr/plugin.h
index 64a79f5..3d34802 100644
--- a/src/plugin_mgr/plugin.h
+++ b/src/plugin_mgr/plugin.h
@@ -32,6 +32,7 @@ struct Instance {
const static std::string pluginStateOff;
std::string GetInfo() const;
std::string GetName() const;
+ std::string GetRun() const;
};
class Plugin {
--
2.33.0