aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmlplugindump/main.cpp
diff options
context:
space:
mode:
authorJacques GUILLOU <jacques.guillou@pelagicore.com>2017-01-04 14:31:29 +0100
committerJacques GUILLOU <jacques.guillou@pelagicore.com>2017-01-05 16:54:38 +0000
commit321726cb5e87be1969f22a0eef4166ba36344329 (patch)
tree603cefcb539c8ae894e8bb532e9396626f7b2486 /tools/qmlplugindump/main.cpp
parente62fde84e2fac321386c6fbb6fb90a36c0989a3d (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/main.cpp')
-rw-r--r--tools/qmlplugindump/main.cpp20
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;