Normalising config directory to ensure it has trailing path separator resolving #2552

* Moved Setter next to Getter
* Set `config_dir` to ensure consistent directory for all files resolving #2551
* Changed PluginManager loading log message to include directory
This commit is contained in:
Chris 2022-06-25 22:23:12 +10:00 committed by Adam Honse
parent 663b28508c
commit 2770206a8d
3 changed files with 32 additions and 19 deletions

View file

@ -1,4 +1,5 @@
#include "LogManager.h" #include "LogManager.h"
#include "filesystem.h"
#include "PluginManager.h" #include "PluginManager.h"
#include "OpenRGBThemeManager.h" #include "OpenRGBThemeManager.h"
@ -11,6 +12,13 @@ PluginManager::PluginManager()
AddPluginCallbackArg = nullptr; AddPluginCallbackArg = nullptr;
RemovePluginCallbackVal = nullptr; RemovePluginCallbackVal = nullptr;
RemovePluginCallbackArg = nullptr; RemovePluginCallbackArg = nullptr;
/*-------------------------------------------------------------------------*\
| Create OpenRGB plugins directory |
\*-------------------------------------------------------------------------*/
std::string plugins_dir = ResourceManager::get()->GetConfigurationDirectory() + plugins_path;
filesystem::create_directories(plugins_dir);
} }
void PluginManager::RegisterAddPluginCallback(AddPluginCallback new_callback, void * new_callback_arg) void PluginManager::RegisterAddPluginCallback(AddPluginCallback new_callback, void * new_callback_arg)
@ -27,15 +35,14 @@ void PluginManager::RegisterRemovePluginCallback(RemovePluginCallback new_callba
void PluginManager::ScanAndLoadPlugins() void PluginManager::ScanAndLoadPlugins()
{ {
LOG_INFO("Loading plugins");
/*---------------------------------------------------------*\ /*---------------------------------------------------------*\
| Get the plugins directory | | Get the plugins directory |
| | | |
| The plugins directory is a directory named "plugins" in | | The plugins directory is a directory named "plugins" in |
| the configuration directory | | the configuration directory |
\*---------------------------------------------------------*/ \*---------------------------------------------------------*/
const QDir plugins_dir = QString().fromStdString(ResourceManager::get()->GetConfigurationDirectory()) + "plugins/"; const QDir plugins_dir = QString(ResourceManager::get()->GetConfigurationDirectory().c_str()).append(plugins_path);
LOG_INFO("[PluginManager] Scanning plugin directory: %s", plugins_dir.absolutePath().toStdString().c_str());
/*---------------------------------------------------------*\ /*---------------------------------------------------------*\
| Get a list of all files in the plugins directory | | Get a list of all files in the plugins directory |

View file

@ -52,4 +52,6 @@ private:
RemovePluginCallback RemovePluginCallbackVal; RemovePluginCallback RemovePluginCallbackVal;
void * RemovePluginCallbackArg; void * RemovePluginCallbackArg;
const char * plugins_path = "plugins/";
}; };

View file

@ -481,13 +481,6 @@ void ResourceManager::SetupConfigurationDirectory()
| Create OpenRGB configuration directory if it doesn't exist | | Create OpenRGB configuration directory if it doesn't exist |
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
filesystem::create_directories(config_dir); filesystem::create_directories(config_dir);
/*-------------------------------------------------------------------------*\
| Create OpenRGB plugins directory |
\*-------------------------------------------------------------------------*/
std::string plugins_dir = config_dir + "plugins";
filesystem::create_directories(plugins_dir);
} }
else else
{ {
@ -500,6 +493,26 @@ std::string ResourceManager::GetConfigurationDirectory()
return(config_dir); return(config_dir);
} }
void ResourceManager::SetConfigurationDirectory(std::string directory)
{
/*-----------------------------------------------------*\
| Ensure the directory string has a trailing slash |
\*-----------------------------------------------------*/
const char separator = filesystem::path::preferred_separator;
if(directory[directory.size() - 1] != separator)
{
directory += separator;
}
config_dir = directory;
settings_manager->LoadSettings(directory + "OpenRGB.json");
profile_manager->SetConfigurationDirectory(directory);
rgb_controllers_sizes.clear();
rgb_controllers_sizes = profile_manager->LoadProfileToList("sizes", true);
}
NetworkServer* ResourceManager::GetServer() NetworkServer* ResourceManager::GetServer()
{ {
return(server); return(server);
@ -579,15 +592,6 @@ const char *ResourceManager::GetDetectionString()
return (detection_string); return (detection_string);
} }
void ResourceManager::SetConfigurationDirectory(std::string directory)
{
settings_manager->LoadSettings(directory + "OpenRGB.json");
profile_manager->SetConfigurationDirectory(directory);
rgb_controllers_sizes.clear();
rgb_controllers_sizes = profile_manager->LoadProfileToList("sizes", true);
}
void ResourceManager::Cleanup() void ResourceManager::Cleanup()
{ {
ResourceManager::get()->WaitForDeviceDetection(); ResourceManager::get()->WaitForDeviceDetection();