diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/function/GlobalSettingStation.cpp | 39 | ||||
-rw-r--r-- | src/core/function/GlobalSettingStation.h | 7 | ||||
-rw-r--r-- | src/core/module/ModuleInit.cpp | 40 |
3 files changed, 52 insertions, 34 deletions
diff --git a/src/core/function/GlobalSettingStation.cpp b/src/core/function/GlobalSettingStation.cpp index 26b5d8b8..4c88fde4 100644 --- a/src/core/function/GlobalSettingStation.cpp +++ b/src/core/function/GlobalSettingStation.cpp @@ -136,6 +136,41 @@ class GlobalSettingStation::Impl { return app_modules_path(); } + [[nodiscard]] auto GetIntegratedModulePath() const -> QString { + const auto exec_binary_path = GetAppDir(); + +#if defined(__linux__) + // AppImage + if (!qEnvironmentVariable("APPIMAGE").isEmpty()) { + return qEnvironmentVariable("APPDIR") + "/usr/modules"; + } + // Flatpak + if (!qEnvironmentVariable("container").isEmpty()) { + return "/app/modules"; + } +#endif + +#if defined(_WIN32) || defined(WIN32) + +#ifdef NDEBUG + return exec_binary_path + "/../modules"; +#else + return exec_binary_path + "/../modules/bin"; +#endif + +#endif + +#if defined(__APPLE__) && defined(__MACH__) + +#ifdef NDEBUG + return exec_binary_path + "/../Modules"; +#endif + +#endif + + return exec_binary_path + "/modules"; + } + private: [[nodiscard]] auto app_config_file_path() const -> QString { return app_config_path_ + "/config.ini"; @@ -205,4 +240,8 @@ void GlobalSettingStation::ClearAllDataObjects() const { auto GlobalSettingStation::GetConfigPath() const -> QString { return p_->GetConfigPath(); } + +auto GlobalSettingStation::GetIntegratedModulePath() const -> QString { + return p_->GetIntegratedModulePath(); +} } // namespace GpgFrontend
\ No newline at end of file diff --git a/src/core/function/GlobalSettingStation.h b/src/core/function/GlobalSettingStation.h index e7da0308..f45c0b49 100644 --- a/src/core/function/GlobalSettingStation.h +++ b/src/core/function/GlobalSettingStation.h @@ -124,6 +124,13 @@ class GPGFRONTEND_CORE_EXPORT GlobalSettingStation */ void ClearAllDataObjects() const; + /** + * @brief Get the Integrated Module Path object + * + * @return QString + */ + [[nodiscard]] auto GetIntegratedModulePath() const -> QString; + private: class Impl; SecureUniquePtr<Impl> p_; diff --git a/src/core/module/ModuleInit.cpp b/src/core/module/ModuleInit.cpp index 321f322e..9f282a5f 100644 --- a/src/core/module/ModuleInit.cpp +++ b/src/core/module/ModuleInit.cpp @@ -49,45 +49,17 @@ auto SearchModuleFromPath(const QString& mods_path, } auto LoadIntegratedMods() -> QMap<QString, bool> { - const auto exec_binary_path = GlobalSettingStation::GetInstance().GetAppDir(); - QString mods_path = exec_binary_path + "/modules"; + const auto module_path = + GlobalSettingStation::GetInstance().GetIntegratedModulePath(); + LOG_I() << "loading integrated modules from path:" << module_path; -#if defined(__linux__) - // AppImage - if (!qEnvironmentVariable("APPIMAGE").isEmpty()) { - mods_path = qEnvironmentVariable("APPDIR") + "/usr/modules"; - } - // Flatpak - if (!qEnvironmentVariable("container").isEmpty()) { - mods_path = "/app/modules"; - } -#endif - -#if defined(_WIN32) || defined(WIN32) - -#ifdef NDEBUG - mods_path = exec_binary_path + "/../modules"; -#else - mods_path = exec_binary_path + "/../modules/bin"; -#endif - -#endif - -#if defined(__APPLE__) && defined(__MACH__) - -#ifdef NDEBUG - mods_path = exec_binary_path + "/../Modules"; -#endif - -#endif - - if (!QDir(mods_path).exists()) { - LOG_W() << "integrated module directory at path: " << mods_path + if (!QDir(module_path).exists()) { + LOG_W() << "integrated modules at path: " << module_path << " not found, abort..."; return {}; } - return SearchModuleFromPath(mods_path, true); + return SearchModuleFromPath(module_path, true); } auto LoadExternalMods() -> QMap<QString, bool> { |