Browse Source

*converter: make --plugin-dir accept the actual root plugin directory.

For some reason, it was adding also the magnum / magnum-d directory,
which isn't really useful, especially in cases where the directory is
not at all or it's desired to pick a debug plugin from a release
executable and vice versa.

Also the distancefieldconverter was still attempting to join with an
absolute path -- somehow 7fb63a9434 missed
this one.

I really need to write regression tests for all this, sigh.
pull/580/head
Vladimír Vondruš 4 years ago
parent
commit
8fd821c88b
  1. 4
      src/Magnum/SceneTools/sceneconverter.cpp
  2. 2
      src/Magnum/ShaderTools/shaderconverter.cpp
  3. 7
      src/Magnum/Text/fontconverter.cpp
  4. 5
      src/Magnum/TextureTools/distancefieldconverter.cpp
  5. 5
      src/Magnum/Trade/imageconverter.cpp

4
src/Magnum/SceneTools/sceneconverter.cpp

@ -337,12 +337,12 @@ is specified as well, the IDs reference attributes of the first mesh.)")
/* Importer manager */ /* Importer manager */
PluginManager::Manager<Trade::AbstractImporter> importerManager{ PluginManager::Manager<Trade::AbstractImporter> importerManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImporter::pluginSearchPaths().back())}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImporter::pluginSearchPaths().back()).second())};
/* Scene converter manager */ /* Scene converter manager */
PluginManager::Manager<Trade::AbstractSceneConverter> converterManager{ PluginManager::Manager<Trade::AbstractSceneConverter> converterManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Trade::AbstractSceneConverter::pluginSearchPaths().back())}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractSceneConverter::pluginSearchPaths().back()).second())};
Containers::Pointer<Trade::AbstractImporter> importer = importerManager.loadAndInstantiate(args.value("importer")); Containers::Pointer<Trade::AbstractImporter> importer = importerManager.loadAndInstantiate(args.value("importer"));
if(!importer) { if(!importer) {

2
src/Magnum/ShaderTools/shaderconverter.cpp

@ -359,7 +359,7 @@ see documentation of a particular converter for more information.)")
/* Set up a converter manager */ /* Set up a converter manager */
PluginManager::Manager<ShaderTools::AbstractConverter> converterManager{ PluginManager::Manager<ShaderTools::AbstractConverter> converterManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), ShaderTools::AbstractConverter::pluginSearchPaths().back())}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(ShaderTools::AbstractConverter::pluginSearchPaths().back()).second())};
/* Data passed from one converter to another in case there's more than one */ /* Data passed from one converter to another in case there's more than one */
Containers::Array<char> data; Containers::Array<char> data;

7
src/Magnum/Text/fontconverter.cpp

@ -23,6 +23,7 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Containers/Pair.h>
#include <Corrade/PluginManager/Manager.h> #include <Corrade/PluginManager/Manager.h>
#include <Corrade/Utility/Arguments.h> #include <Corrade/Utility/Arguments.h>
#include <Corrade/Utility/DebugStl.h> #include <Corrade/Utility/DebugStl.h>
@ -158,12 +159,12 @@ int FontConverter::exec() {
/* Font converter dependencies */ /* Font converter dependencies */
PluginManager::Manager<Trade::AbstractImageConverter> imageConverterManager{ PluginManager::Manager<Trade::AbstractImageConverter> imageConverterManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImageConverter::pluginSearchPaths().back())}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImageConverter::pluginSearchPaths().back()).second())};
/* Load font */ /* Load font */
PluginManager::Manager<Text::AbstractFont> fontManager{ PluginManager::Manager<Text::AbstractFont> fontManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Text::AbstractFont::pluginSearchPaths().back())}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Text::AbstractFont::pluginSearchPaths().back()).second())};
Containers::Pointer<Text::AbstractFont> font = fontManager.loadAndInstantiate(args.value("font")); Containers::Pointer<Text::AbstractFont> font = fontManager.loadAndInstantiate(args.value("font"));
if(!font) return 1; if(!font) return 1;
@ -171,7 +172,7 @@ int FontConverter::exec() {
(MagnumFontConverter needs TgaImageConverter, for example) */ (MagnumFontConverter needs TgaImageConverter, for example) */
PluginManager::Manager<Text::AbstractFontConverter> converterManager{ PluginManager::Manager<Text::AbstractFontConverter> converterManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Text::AbstractFontConverter::pluginSearchPaths().back())}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Text::AbstractFontConverter::pluginSearchPaths().back()).second())};
converterManager.registerExternalManager(imageConverterManager); converterManager.registerExternalManager(imageConverterManager);
/* Load font converter */ /* Load font converter */

5
src/Magnum/TextureTools/distancefieldconverter.cpp

@ -24,6 +24,7 @@
*/ */
#include <Corrade/Containers/Optional.h> #include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/Pair.h>
#include <Corrade/Utility/Arguments.h> #include <Corrade/Utility/Arguments.h>
#include <Corrade/Utility/DebugStl.h> /** @todo remove once Arguments is std::string-free */ #include <Corrade/Utility/DebugStl.h> /** @todo remove once Arguments is std::string-free */
#include <Corrade/Utility/Path.h> #include <Corrade/Utility/Path.h>
@ -156,14 +157,14 @@ int DistanceFieldConverter::exec() {
/* Load importer plugin */ /* Load importer plugin */
PluginManager::Manager<Trade::AbstractImporter> importerManager{ PluginManager::Manager<Trade::AbstractImporter> importerManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImporter::pluginSearchPaths()[0])}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImporter::pluginSearchPaths().back()).second())};
Containers::Pointer<Trade::AbstractImporter> importer = importerManager.loadAndInstantiate(args.value("importer")); Containers::Pointer<Trade::AbstractImporter> importer = importerManager.loadAndInstantiate(args.value("importer"));
if(!importer) return 1; if(!importer) return 1;
/* Load converter plugin */ /* Load converter plugin */
PluginManager::Manager<Trade::AbstractImageConverter> converterManager{ PluginManager::Manager<Trade::AbstractImageConverter> converterManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImageConverter::pluginSearchPaths()[0])}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImageConverter::pluginSearchPaths().back()).second())};
Containers::Pointer<Trade::AbstractImageConverter> converter = converterManager.loadAndInstantiate(args.value("converter")); Containers::Pointer<Trade::AbstractImageConverter> converter = converterManager.loadAndInstantiate(args.value("converter"));
if(!converter) return 2; if(!converter) return 2;

5
src/Magnum/Trade/imageconverter.cpp

@ -25,6 +25,7 @@
#include <Corrade/Containers/Optional.h> #include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/GrowableArray.h> #include <Corrade/Containers/GrowableArray.h>
#include <Corrade/Containers/Pair.h>
#include <Corrade/Containers/StaticArray.h> #include <Corrade/Containers/StaticArray.h>
#include <Corrade/Containers/StridedArrayView.h> #include <Corrade/Containers/StridedArrayView.h>
#include <Corrade/PluginManager/Manager.h> #include <Corrade/PluginManager/Manager.h>
@ -447,7 +448,7 @@ no -C / --converter is specified, AnyImageConverter is used.)")
PluginManager::Manager<Trade::AbstractImporter> importerManager{ PluginManager::Manager<Trade::AbstractImporter> importerManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImporter::pluginSearchPaths().back())}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImporter::pluginSearchPaths().back()).second())};
const Int dimensions = args.value<Int>("dimensions"); const Int dimensions = args.value<Int>("dimensions");
/** @todo make them array options as well? */ /** @todo make them array options as well? */
@ -921,7 +922,7 @@ no -C / --converter is specified, AnyImageConverter is used.)")
PluginManager::Manager<Trade::AbstractImageConverter> converterManager{ PluginManager::Manager<Trade::AbstractImageConverter> converterManager{
args.value("plugin-dir").empty() ? Containers::String{} : args.value("plugin-dir").empty() ? Containers::String{} :
Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImageConverter::pluginSearchPaths().back())}; Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImageConverter::pluginSearchPaths().back()).second())};
/* Assume there's always one passed --converter option less, and the last /* Assume there's always one passed --converter option less, and the last
is implicitly AnyImageConverter. All converters except the last one are is implicitly AnyImageConverter. All converters except the last one are

Loading…
Cancel
Save