aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMarco Benelli <marco.benelli@theqtcompany.com>2015-09-16 14:02:00 +0200
committerKai Koehne <kai.koehne@theqtcompany.com>2015-10-19 06:46:05 +0000
commitbb28b13d51648a51244e49e30426cd6ca9ac3e08 (patch)
tree31b3d188bf46f9e6751bed67a4bb7e836ebccbc1 /tools
parentdd8f370cfa996c8ebb42120f808bf89b402ed141 (diff)
Skip designer-related directories while scanning imports.
The qtcreator's qmldesigner plugin contains some directories that are not reacheable during the import scan, resulting in qmlplugindump complaing for missing dependencies. Since these components are not needed, let the scanner just ignore them. Change-Id: Icdf7c9e841cf5bcc1e737a0fc75a63b1e02f87f9 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/qmlimportscanner/main.cpp35
1 files changed, 31 insertions, 4 deletions
diff --git a/tools/qmlimportscanner/main.cpp b/tools/qmlimportscanner/main.cpp
index 395c31a710..56cca8fcb4 100644
--- a/tools/qmlimportscanner/main.cpp
+++ b/tools/qmlimportscanner/main.cpp
@@ -54,6 +54,7 @@
#include <QtCore/QLibraryInfo>
#include <iostream>
+#include <algorithm>
QT_USE_NAMESPACE
@@ -343,10 +344,35 @@ QVariantList findQmlImportsInDirectory(const QString &qmlDir)
if (qmlDir.isEmpty())
return ret;
- QDirIterator iterator(qmlDir, QDirIterator::Subdirectories);
+ QDirIterator iterator(qmlDir, QDir::AllDirs | QDir::NoDotDot, QDirIterator::Subdirectories);
+ QStringList blacklist;
+ struct isMetainfo {
+ bool operator() (const QFileInfo &x) const {
+ return x.suffix() == QLatin1String("metainfo");
+ }
+ };
+ struct pathStartsWith {
+ pathStartsWith(const QString &path) : _path(path) {}
+ bool operator() (const QString &x) const {
+ return _path.startsWith(x);
+ }
+ const QString _path;
+ };
+
+
while (iterator.hasNext()) {
iterator.next();
- QString path = iterator.filePath();
+ const QString path = iterator.filePath();
+ const QFileInfoList entries = QDir(path).entryInfoList();
+
+ // Skip designer related stuff
+ if (std::find_if(entries.cbegin(), entries.cend(), isMetainfo()) != entries.cend()) {
+ blacklist << path;
+ continue;
+ }
+
+ if (std::find_if(blacklist.cbegin(), blacklist.cend(), pathStartsWith(path)) != blacklist.cend())
+ continue;
// skip obvious build output directories
if (path.contains(QStringLiteral("Debug-iphoneos")) || path.contains(QStringLiteral("Release-iphoneos")) ||
@@ -358,8 +384,9 @@ QVariantList findQmlImportsInDirectory(const QString &qmlDir)
continue;
}
- QVariantList imports = findQmlImportsInFile(path);
- ret = mergeImports(ret, imports);
+ foreach (const QFileInfo &x, entries)
+ if (x.isFile())
+ ret = mergeImports(ret, findQmlImportsInFile(x.absoluteFilePath()));
}
return ret;
}