131 lines
5.8 KiB
Diff
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
|
|
|