aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmlplugindump/main.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-02-12 10:53:43 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-02-12 10:53:43 +0100
commit20a51e87fd15b8a6c1503b905399f7befe31114b (patch)
tree5a8667150568ed798d63eb165372c198549498c2 /tools/qmlplugindump/main.cpp
parent6c152bf27f94f01b2942b02e370df4fa01e0d40f (diff)
parent084dbb06d7b00c4a67edb6ce58956150036c35f2 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: .qmake.conf Change-Id: I356ec83cf687bd2833f9a7c5e820d56b1efa8979
Diffstat (limited to 'tools/qmlplugindump/main.cpp')
-rw-r--r--tools/qmlplugindump/main.cpp42
1 files changed, 41 insertions, 1 deletions
diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp
index 776e19fdf4..7870e3a9df 100644
--- a/tools/qmlplugindump/main.cpp
+++ b/tools/qmlplugindump/main.cpp
@@ -51,9 +51,11 @@
#include <QtCore/private/qobject_p.h>
#include <QtCore/private/qmetaobject_p.h>
+#include <QRegularExpression>
#include <iostream>
#include <algorithm>
+#include "qmltypereader.h"
#include "qmlstreamwriter.h"
#ifdef QT_SIMULATOR
@@ -728,7 +730,7 @@ void sigSegvHandler(int) {
void printUsage(const QString &appName)
{
std::cerr << qPrintable(QString(
- "Usage: %1 [-v] [-noinstantiate] [-defaultplatform] [-[non]relocatable] [-dependencies <dependencies.json>] module.uri version [module/import/path]\n"
+ "Usage: %1 [-v] [-noinstantiate] [-defaultplatform] [-[non]relocatable] [-dependencies <dependencies.json>] [-merge <file-to-merge.qmltypes>] 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(
@@ -982,6 +984,7 @@ int main(int argc, char *argv[])
QString pluginImportVersion;
bool relocatable = true;
QString dependenciesFile;
+ QString mergeFile;
enum Action { Uri, Path, Builtins };
Action action = Uri;
{
@@ -1000,6 +1003,13 @@ int main(int argc, char *argv[])
return EXIT_INVALIDARGUMENTS;
}
dependenciesFile = args.at(iArg);
+ } else if (arg == QLatin1String("--merge")
+ || arg == QLatin1String("-merge")) {
+ if (++iArg == args.size()) {
+ std::cerr << "missing merge file" << std::endl;
+ return EXIT_INVALIDARGUMENTS;
+ }
+ mergeFile = args.at(iArg);
} else if (arg == QLatin1String("--notrelocatable")
|| arg == QLatin1String("-notrelocatable")
|| arg == QLatin1String("--nonrelocatable")
@@ -1061,6 +1071,26 @@ int main(int argc, char *argv[])
QDir::setCurrent(pluginImportPath);
engine.addImportPath(pluginImportPath);
}
+
+ // Merge file.
+ QStringList mergeDependencies;
+ QString mergeComponents;
+ if (!mergeFile.isEmpty()) {
+ QStringList merge = readQmlTypes(mergeFile);
+ if (!merge.isEmpty()) {
+ QRegularExpression re("(\\w+\\.*\\w*\\s*\\d+\\.\\d+)");
+ QRegularExpressionMatchIterator i = re.globalMatch(merge[1]);
+ while (i.hasNext()) {
+ QRegularExpressionMatch m = i.next();
+ QString d = m.captured(1);
+ mergeDependencies << m.captured(1);
+ }
+ mergeComponents = merge [2];
+ }
+ }
+
+ // Dependencies.
+
bool calculateDependencies = !pluginImportUri.isEmpty() && !pluginImportVersion.isEmpty();
QStringList dependencies;
if (!dependenciesFile.isEmpty())
@@ -1210,6 +1240,13 @@ int main(int argc, char *argv[])
"// '%1 %2'\n"
"\n").arg(QFileInfo(args.at(0)).baseName(), args.mid(1).join(QLatin1Char(' '))));
qml.writeStartObject("Module");
+
+ // Insert merge dependencies.
+ if (!mergeDependencies.isEmpty()) {
+ dependencies << mergeDependencies;
+ }
+ compactDependencies(&dependencies);
+
QStringList quotedDependencies;
foreach (const QString &dep, dependencies)
quotedDependencies << enquote(dep);
@@ -1236,6 +1273,9 @@ int main(int argc, char *argv[])
if (pluginImportUri.isEmpty())
dumper.writeEasingCurve();
+ // Insert merge file.
+ qml.write(mergeComponents);
+
qml.writeEndObject();
qml.writeEndDocument();