79 QFile listFile(pathToList);
80 if (!listFile.open(QFile::ReadOnly | QFile::Text))
82 QHash<QString, QStringList> directoryToNecessaryImports;
83 while (!listFile.atEnd()) {
84 QByteArray partFilePath = listFile.readLine().trimmed();
85 QString directoryPath = QFileInfo(QString::fromUtf8(partFilePath)).absolutePath();
86 QDirIterator dirIt(directoryPath, {
"*_qt.part.conf"_L1 }, QDir::Filter::Files );
87 while (dirIt.hasNext()) {
88 QFile partialFile(dirIt.next());
89 if (!partialFile.open(QFile::ReadOnly | QFile::Text)) {
90 qCritical() <<
"could not open" << partialFile.fileName();
93 while (!partialFile.atEnd()) {
94 QByteArray import = partialFile.readLine().trimmed();
95 directoryToNecessaryImports[directoryPath].append(QString::fromUtf8(import));
101 QFile mergedPathsListFile(pathToMergedQtConfsList);
102 if (!mergedPathsListFile.open(QFile::ReadOnly | QFile::Text)) {
103 qCritical() <<
"could not open" << mergedPathsListFile.fileName();
106 QHash<QString, QString> partialPathToMergedPath;
107 while (!mergedPathsListFile.atEnd()) {
108 QByteArray row = mergedPathsListFile.readLine().trimmed();
109 QList<QByteArray> parts = row.split(
';');
110 Q_ASSERT(parts.size() == 2);
111 const QString partialFileDirectoryPath =
112 QFileInfo(QString::fromUtf8(parts[0])).absolutePath();
113 const QString mergedFilePath = QString::fromUtf8(parts[1]);
114 partialPathToMergedPath.insert(partialFileDirectoryPath, mergedFilePath);
117 for (
const QString &directoryPath: directoryToNecessaryImports.keys()) {
118 if (!partialPathToMergedPath.contains(directoryPath)) {
119 qCritical() <<
"no merged qt.conf file found for directory" << directoryPath;
122 const QString mergedQtConfFilePath = partialPathToMergedPath.value(directoryPath);
126 QDir().mkpath(QFileInfo(mergedQtConfFilePath).absolutePath());
128 QFile consolidatedQtConfFile(mergedQtConfFilePath);
129 if (!consolidatedQtConfFile.open(QFile::WriteOnly | QFile::Text)) {
130 qCritical() <<
"could not open" << consolidatedQtConfFile.fileName();
133 QTextStream out(&consolidatedQtConfFile);
134 QStringList allIncludes = directoryToNecessaryImports.value(directoryPath);
135 allIncludes.removeDuplicates();
136 out <<
"[Config]\nMergeQtConf = true\n"
137 <<
"[Paths]\nQmlImports = "
138 << allIncludes.join(u",") << Qt::endl;
140 QFile outfile(pathToList + u".done");
141 if (!outfile.open(QFile::WriteOnly | QFile::Text))
143 outfile.write(QByteArray::number(QDateTime::currentSecsSinceEpoch()));