Browse Source

{scene,shader,image}converter: make output argument treating consistent.

If it's ignored, a warning is printed to catch accidents, but not an
error since it should be possible to just append --info to existing
command line to see what the input is about.
pull/495/head
Vladimír Vondruš 5 years ago
parent
commit
50d187fe83
  1. 13
      src/Magnum/MeshTools/sceneconverter.cpp
  2. 10
      src/Magnum/ShaderTools/shaderconverter.cpp
  3. 19
      src/Magnum/Trade/imageconverter.cpp

13
src/Magnum/MeshTools/sceneconverter.cpp

@ -86,7 +86,7 @@ magnum-sceneconverter [-h|--help] [-I|--importer IMPORTER]
Arguments:
- `input` --- input file
- `output` --- output file, ignored if `--info` is present
- `output` --- output file; ignored if `--info` is present
- `-h`, `--help` --- display this help message and exit
- `-I`, `--importer IMPORTER` --- scene importer plugin (default:
@ref Trade::AnySceneImporter "AnySceneImporter")
@ -199,7 +199,7 @@ UnsignedInt namedAttributeId(const Trade::MeshData& mesh, UnsignedInt id) {
int main(int argc, char** argv) {
Utility::Arguments args;
args.addArgument("input").setHelp("input", "input file")
.addArgument("output").setHelp("output", "output file, ignored if --info is present")
.addArgument("output").setHelp("output", "output file; ignored if --info is present")
.addOption('I', "importer", "AnySceneImporter").setHelp("importer", "scene importer plugin")
.addArrayOption('C', "converter").setHelp("converter", "scene converter plugin(s)")
.addOption("plugin-dir").setHelp("plugin-dir", "override base plugin dir", "DIR")
@ -241,6 +241,15 @@ save its output; if no -C / --converter is specified, AnySceneConverter is
used.)")
.parse(argc, argv);
/* Generic checks */
if(!args.value<Containers::StringView>("output").isEmpty()) {
/* Not an error in this case, it should be possible to just append
--info to existing command line without having to remove anything.
But print a warning at least, it could also be a mistyped option. */
if(args.isSet("info"))
Warning{} << "Ignoring output file for --info:" << args.value<Containers::StringView>("output");
}
PluginManager::Manager<Trade::AbstractImporter> importerManager{
args.value("plugin-dir").empty() ? std::string{} :
Utility::Directory::join(args.value("plugin-dir"), Trade::AbstractImporter::pluginSearchPaths()[0])};

10
src/Magnum/ShaderTools/shaderconverter.cpp

@ -75,7 +75,7 @@ magnum-shaderconverter [-h|--help] [--validate] [--link]
Arguments:
- `input` --- input file(s)
- `output` --- output file, ignored if `--validate` is present. If neither
- `output` --- output file, disallowed for `--validate`. If neither
`--validate` nor `--link` is present, corresponds to the
@ref ShaderTools::AbstractConverter::convertFileToFile() function.
- `-h`, `--help` --- display this help message and exit
@ -173,7 +173,7 @@ using namespace Magnum;
int main(int argc, char** argv) {
Utility::Arguments args;
args.addArrayArgument("input").setHelp("input", "input file(s)")
.addArgument("output").setHelp("output", "output file, ignored if --validate is present")
.addArgument("output").setHelp("output", "output file, disallowed for --validate")
.addBooleanOption("validate").setHelp("validate", "validate input")
.addBooleanOption("link").setHelp("link", "link multiple input files together")
.addArrayOption('C', "converter").setHelp("converter", "shader converter plugin(s)")
@ -232,9 +232,9 @@ see documentation of a particular converter for more information.)")
.parse(argc, argv);
/* Generic checks */
if(args.isSet("validate")) {
if(!args.value<Containers::StringView>("output").isEmpty()) {
Error{} << "Output file shouldn't be set for --validate";
if(!args.value<Containers::StringView>("output").isEmpty()) {
if(args.isSet("validate")) {
Error{} << "Output file shouldn't be set for --validate:" << args.value<Containers::StringView>("output");
return 1;
}
}

19
src/Magnum/Trade/imageconverter.cpp

@ -75,7 +75,8 @@ magnum-imageconverter [-h|--help] [-I|--importer IMPORTER]
Arguments:
- `input` --- input image
- `output` --- output image, ignored if `--in-place` or `--info` is present
- `output` --- output image; ignored if `--info` is present, disallowed for
`--in-place`
- `-h`, `--help` --- display this help message and exit
- `-I`, `--importer IMPORTER` --- image importer plugin (default:
@ref Trade::AnyImageImporter "AnyImageImporter")
@ -145,7 +146,7 @@ using namespace Magnum;
int main(int argc, char** argv) {
Utility::Arguments args;
args.addArgument("input").setHelp("input", "input image")
.addArgument("output").setHelp("output", "output image, ignored if --in-place or --info is present")
.addArgument("output").setHelp("output", "output image; ignored if --info is present, disallowed for --in-place")
.addOption('I', "importer", "AnyImageImporter").setHelp("importer", "image importer plugin")
.addOption('C', "converter", "AnyImageConverter").setHelp("converter", "image converter plugin")
.addOption("plugin-dir").setHelp("plugin-dir", "override base plugin dir", "DIR")
@ -182,6 +183,20 @@ plugin configuration. If the = character is omitted, it's equivalent to saying
key=true; configuration subgroups are delimited with /.)")
.parse(argc, argv);
/* Generic checks */
if(!args.value<Containers::StringView>("output").isEmpty()) {
if(args.isSet("in-place")) {
Error{} << "Output file shouldn't be set for --in-place:" << args.value<Containers::StringView>("output");
return 1;
}
/* Not an error in this case, it should be possible to just append
--info to existing command line without having to remove anything.
But print a warning at least, it could also be a mistyped option. */
if(args.isSet("info"))
Warning{} << "Ignoring output file for --info:" << args.value<Containers::StringView>("output");
}
PluginManager::Manager<Trade::AbstractImporter> importerManager{
args.value("plugin-dir").empty() ? std::string{} :
Utility::Directory::join(args.value("plugin-dir"), Trade::AbstractImporter::pluginSearchPaths()[0])};

Loading…
Cancel
Save