segregated scripting/ plugins (re: permissions checkbox)

This commit is contained in:
humbletim 2019-07-25 21:53:17 -04:00
parent c5b2514e0e
commit 6ae75ecafe
4 changed files with 25 additions and 3 deletions

View file

@ -7,7 +7,8 @@
#
macro(SETUP_HIFI_CLIENT_SERVER_PLUGIN)
set(${TARGET_NAME}_SHARED 1)
setup_hifi_library(${ARGV})
set(PLUGIN_SUBFOLDER ${ARGN})
setup_hifi_library()
if (BUILD_CLIENT)
add_dependencies(interface ${TARGET_NAME})
@ -27,6 +28,11 @@ macro(SETUP_HIFI_CLIENT_SERVER_PLUGIN)
set(SERVER_PLUGIN_PATH "plugins")
endif()
if (PLUGIN_SUBFOLDER)
set(CLIENT_PLUGIN_PATH "${CLIENT_PLUGIN_PATH}/${PLUGIN_SUBFOLDER}")
set(SERVER_PLUGIN_PATH "${SERVER_PLUGIN_PATH}/${PLUGIN_SUBFOLDER}")
endif()
if (CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_GENERATOR STREQUAL "Unix Makefiles")
set(CLIENT_PLUGIN_FULL_PATH "${CMAKE_BINARY_DIR}/interface/${CLIENT_PLUGIN_PATH}/")
set(SERVER_PLUGIN_FULL_PATH "${CMAKE_BINARY_DIR}/assignment-client/${SERVER_PLUGIN_PATH}/")

View file

@ -110,6 +110,16 @@ int PluginManager::instantiate() {
pluginDir.setNameFilters(QStringList() << "libplugins_lib*.so");
#endif
auto candidates = pluginDir.entryList();
if (_enableScriptingPlugins.get()) {
QDir scriptingPluginDir{ pluginDir };
scriptingPluginDir.cd("scripting");
qCDebug(plugins) << "Loading scripting plugins from " << scriptingPluginDir.path();
for (auto plugin : scriptingPluginDir.entryList()) {
candidates << "scripting/" + plugin;
}
}
for (auto plugin : candidates) {
qCDebug(plugins) << "Attempting plugin" << qPrintable(plugin);
QSharedPointer<QPluginLoader> loader(new QPluginLoader(pluginPath + plugin));
@ -144,7 +154,9 @@ int PluginManager::instantiate() {
qCDebug(plugins) << " " << qPrintable(loader->errorString());
}
}
} else qWarning() << "pluginPath does not exit..." << pluginDir;
} else {
qWarning() << "pluginPath does not exit..." << pluginDir;
}
});
return loadedPlugins;
}

View file

@ -10,6 +10,7 @@
#include <QObject>
#include <DependencyManager.h>
#include <SettingHandle.h>
#include "Forward.h"
@ -70,6 +71,9 @@ private:
using LoaderList = QList<Loader>;
const LoaderList& getLoadedPlugins() const;
Setting::Handle<bool> _enableScriptingPlugins {
"private/enableScriptingPlugins", (bool)qgetenv("enableScriptingPlugins").toInt()
};
};
// TODO: we should define this value in CMake, and then use CMake

View file

@ -1,3 +1,3 @@
set(TARGET_NAME KasenAPIExample)
setup_hifi_client_server_plugin()
setup_hifi_client_server_plugin(scripting)
link_hifi_libraries(shared plugins avatars networking graphics gpu)