diff options
author | Jacques GUILLOU <jacques.guillou@pelagicore.com> | 2017-01-04 14:31:29 +0100 |
---|---|---|
committer | Jacques GUILLOU <jacques.guillou@pelagicore.com> | 2017-01-05 16:54:38 +0000 |
commit | 321726cb5e87be1969f22a0eef4166ba36344329 (patch) | |
tree | 603cefcb539c8ae894e8bb532e9396626f7b2486 /tools/qmlplugindump | |
parent | e62fde84e2fac321386c6fbb6fb90a36c0989a3d (diff) |
qmlplugindump : Add a "-output" argument to specify the output file
Having only the possibility to redirect the stdout of
qmlplugindump to a file is both unconvenient and unreliable
since some plugins might write content (such as logs) to
stdout, which pollute the output.
Change-Id: I8b1d482d7674945e6145d59aea839c54600e7784
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
Diffstat (limited to 'tools/qmlplugindump')
-rw-r--r-- | tools/qmlplugindump/main.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp index 883afa057c..443ede4bf0 100644 --- a/tools/qmlplugindump/main.cpp +++ b/tools/qmlplugindump/main.cpp @@ -739,7 +739,7 @@ void sigSegvHandler(int) { void printUsage(const QString &appName) { std::cerr << qPrintable(QString( - "Usage: %1 [-v] [-noinstantiate] [-defaultplatform] [-[non]relocatable] [-dependencies <dependencies.json>] [-merge <file-to-merge.qmltypes>] [-noforceqtquick] module.uri version [module/import/path]\n" + "Usage: %1 [-v] [-noinstantiate] [-defaultplatform] [-[non]relocatable] [-dependencies <dependencies.json>] [-merge <file-to-merge.qmltypes>] [-output <output-file.qmltypes>] [-noforceqtquick] module.uri version [module/import/path]\n" " %1 [-v] [-noinstantiate] -path path/to/qmldir/directory [version]\n" " %1 [-v] -builtins\n" "Example: %1 Qt.labs.folderlistmodel 2.0 /home/user/dev/qt-install/imports").arg( @@ -994,6 +994,7 @@ int main(int argc, char *argv[]) return EXIT_INVALIDARGUMENTS; } + QString outputFilename; QString pluginImportUri; QString pluginImportVersion; bool relocatable = true; @@ -1047,6 +1048,13 @@ int main(int argc, char *argv[]) } else if (arg == QLatin1String("--noforceqtquick") || arg == QLatin1String("-noforceqtquick")){ forceQtQuickDependency = false; + } else if (arg == QLatin1String("--output") + || arg == QLatin1String("-output")) { + if (++iArg == args.size()) { + std::cerr << "missing output file" << std::endl; + return EXIT_INVALIDARGUMENTS; + } + outputFilename = args.at(iArg); } else if (arg == QLatin1String("--defaultplatform") || arg == QLatin1String("-defaultplatform")) { continue; @@ -1300,7 +1308,15 @@ int main(int argc, char *argv[]) qml.writeEndObject(); qml.writeEndDocument(); - std::cout << bytes.constData() << std::flush; + if (!outputFilename.isEmpty()) { + QFile file(outputFilename); + if (file.open(QIODevice::WriteOnly)) { + QTextStream stream(&file); + stream << bytes.constData(); + } + } else { + std::cout << bytes.constData() << std::flush; + } // workaround to avoid crashes on exit QTimer timer; |