diff options
Diffstat (limited to 'src/module/GpgFrontendModuleInit.cpp')
-rw-r--r-- | src/module/GpgFrontendModuleInit.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/module/GpgFrontendModuleInit.cpp b/src/module/GpgFrontendModuleInit.cpp index 6f88b9ec..2b1d8ac9 100644 --- a/src/module/GpgFrontendModuleInit.cpp +++ b/src/module/GpgFrontendModuleInit.cpp @@ -30,14 +30,10 @@ #include <core/module/ModuleManager.h> +#include "Module.h" #include "core/thread/Task.h" #include "core/thread/TaskRunnerGetter.h" -// integrated modules -#include "integrated/gnupg_info_gathering_module/GnuPGInfoGatheringModule.h" -#include "integrated/version_checking_module/VersionCheckingModule.h" -#include "spdlog/common.h" - namespace GpgFrontend::Module { void LoadGpgFrontendModules(ModuleInitArgs) { @@ -45,17 +41,28 @@ void LoadGpgFrontendModules(ModuleInitArgs) { Thread::TaskRunnerGetter::GetInstance().GetTaskRunner()->PostTask( new Thread::Task( [](const DataObjectPtr&) -> int { - MODULE_LOG_INFO("loading integrated module..."); + MODULE_LOG_INFO("loading modules..."); + + auto exec_binary_path = QCoreApplication::applicationDirPath(); + auto mods_path = exec_binary_path + "/mods"; + + if (!QDir(mods_path).exists()) { + MODULE_LOG_WARN("module directory not found, abort..."); + return -1; + } - // VersionCheckingModule - RegisterAndActivateModule< - Integrated::VersionCheckingModule::VersionCheckingModule>(); + MODULE_LOG_INFO("the path of modules directory: {}", mods_path); - // VersionCheckingModule - RegisterAndActivateModule<Integrated::GnuPGInfoGatheringModule:: - GnuPGInfoGatheringModule>(); + for (const auto& module_library_name : + QDir(mods_path).entryList(QStringList() << "*.so" + << "*.dll" + << "*.dylib", + QDir::Files)) { + ModuleManager::GetInstance().LoadModule(mods_path + "/" + + module_library_name); + } - MODULE_LOG_INFO("load integrated module done."); + MODULE_LOG_INFO("load modules done."); return 0; }, "modules_system_init_task")); |