diff --git a/src/Magnum/SceneTools/Test/SceneConverterTest.cpp b/src/Magnum/SceneTools/Test/SceneConverterTest.cpp index 8f9ae8afc..b1a78a6ca 100644 --- a/src/Magnum/SceneTools/Test/SceneConverterTest.cpp +++ b/src/Magnum/SceneTools/Test/SceneConverterTest.cpp @@ -55,7 +55,7 @@ struct SceneConverterTest: TestSuite::Tester { using namespace Containers::Literals; const struct { - const char* name; + TestSuite::TestCaseDescriptionSourceLocation name; Containers::Array args; const char* requiresImporter; const char* requiresConverter; diff --git a/src/Magnum/SceneTools/sceneconverter.cpp b/src/Magnum/SceneTools/sceneconverter.cpp index caa1acbdd..6d0549660 100644 --- a/src/Magnum/SceneTools/sceneconverter.cpp +++ b/src/Magnum/SceneTools/sceneconverter.cpp @@ -564,18 +564,19 @@ well, the IDs reference attributes of the first mesh.)") Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractSceneConverter::pluginSearchPaths().back()).second())}; converterManager.registerExternalManager(imageConverterManager); - Containers::Pointer importer = importerManager.loadAndInstantiate(args.value("importer")); - if(!importer) { - Debug{} << "Available importer plugins:" << ", "_s.join(importerManager.aliasList()); - return 1; - } - - /* Set options, if passed */ - if(args.isSet("verbose")) importer->addFlags(Trade::ImporterFlag::Verbose); - Implementation::setOptions(*importer, "AnySceneImporter", args.value("importer-options")); - /* Print plugin info, if requested */ + /** @todo these all duplicate plugin loading & option setting, move to + some helpers (shared among all command-line tools)? */ if(args.isSet("info-importer")) { + Containers::Pointer importer = importerManager.loadAndInstantiate(args.value("importer")); + if(!importer) { + Debug{} << "Available importer plugins:" << ", "_s.join(importerManager.aliasList()); + return 1; + } + + /* Set options, if passed */ + if(args.isSet("verbose")) importer->addFlags(Trade::ImporterFlag::Verbose); + Implementation::setOptions(*importer, "AnySceneImporter", args.value("importer-options")); Trade::Implementation::printImporterInfo(useColor, *importer); return 0; } @@ -608,6 +609,16 @@ well, the IDs reference attributes of the first mesh.)") return 0; } + Containers::Pointer importer = importerManager.loadAndInstantiate(args.value("importer")); + if(!importer) { + Debug{} << "Available importer plugins:" << ", "_s.join(importerManager.aliasList()); + return 1; + } + + /* Set options, if passed */ + if(args.isSet("verbose")) importer->addFlags(Trade::ImporterFlag::Verbose); + Implementation::setOptions(*importer, "AnySceneImporter", args.value("importer-options")); + /* Wow, C++, you suck. This implicitly initializes to random shit?! Also, because of addSupportedImporterContents() it's not really possible