39 if (!dir.entryList(QStringList(QStringLiteral(
"*.qml")), QDir::Files, QDir::NoSort).isEmpty())
41 const QFileInfoList &subDirs = dir.entryInfoList(QStringList(), QDir::Dirs | QDir::NoDotAndDotDot, QDir::NoSort);
42 for (
const QFileInfo &subDirFi : subDirs) {
43 if (!isBuildDirectory(platform, subDirFi.fileName())) {
44 const QString subPath = qmlDirectoryRecursion(platform, subDirFi.absoluteFilePath());
45 if (!subPath.isEmpty())
64 const QStringList &dlls = findSharedLibraries(directory, platform, debugMatchMode);
65 for (
const QString &dll : dlls)
66 matches->append(directory.filePath(dll));
67 const QFileInfoList &subDirs = directory.entryInfoList(QStringList(), QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);
68 for (
const QFileInfo &subDirFi : subDirs) {
69 QDir subDirectory(subDirFi.absoluteFilePath());
71 if (subDirectory.isReadable() && !subDirectory.exists(QStringLiteral(
"qmldir")))
72 findFileRecursion(subDirectory, platform, debugMatchMode, matches);
78 QString *errorMessage,
int timeout)
80 Q_UNUSED(usesWidgets);
82 QStringList arguments;
83 for (
const QString &importPath : qmlImportPaths)
84 arguments << QStringLiteral(
"-importPath") << importPath;
85 arguments << QStringLiteral(
"-rootPath") << directory;
86 unsigned long exitCode;
89 const QString binary = QStringLiteral(
"qmlimportscanner");
90 if (!runProcess(binary, arguments, QDir::currentPath(), &exitCode, &stdOut, &stdErr,
91 errorMessage, timeout))
94 *errorMessage = binary + QStringLiteral(
" returned ") + QString::number(exitCode)
95 + QStringLiteral(
": ") + QString::fromLocal8Bit(stdErr);
98 QJsonParseError jsonParseError{};
99 const QJsonDocument data = QJsonDocument::fromJson(stdOut, &jsonParseError);
100 if (data.isNull() ) {
101 *errorMessage = binary + QStringLiteral(
" returned invalid JSON output: ")
102 + jsonParseError.errorString() + QStringLiteral(
" :\"")
103 + QString::fromLocal8Bit(stdOut) + u'"';
106 const QJsonArray array = data.array();
107 const int childCount = array.count();
108 for (
int c = 0; c < childCount; ++c) {
109 const QJsonObject object = array.at(c).toObject();
110 if (object.value(QStringLiteral(
"type")).toString() ==
"module"_L1) {
111 const QString path = object.value(QStringLiteral(
"path")).toString();
112 if (!path.isEmpty()) {
114 module.name = object.value(QStringLiteral(
"name")).toString();
115 module.className = object.value(QStringLiteral(
"classname")).toString();
116 module.sourcePath = path;
117 module.relativePath = object.value(QStringLiteral(
"relativePath")).toString();
118 result.modules.append(module);
119 findFileRecursion(QDir(path), Platform(platform), debugMatchMode, &result.plugins);