73 QFile listFile(pathToList);
74 if (!listFile.open(QFile::ReadOnly | QFile::Text))
76 QMultiHash<QString, QString> directoryToNecessaryImports;
77 while (!listFile.atEnd()) {
78 QByteArray partFilePath = listFile.readLine().trimmed();
79 QString directoryPath = QFileInfo(QString::fromUtf8(partFilePath)).absolutePath();
80 QDirIterator dirIt(directoryPath, {
"*_qt.part.conf"_L1 }, QDir::Filter::Files );
81 while (dirIt.hasNext()) {
82 QFile partialFile(dirIt.next());
83 if (!partialFile.open(QFile::ReadOnly | QFile::Text)) {
84 qCritical() <<
"could not open" << partialFile.fileName();
87 while (!partialFile.atEnd()) {
88 QByteArray import = partialFile.readLine().trimmed();
89 directoryToNecessaryImports.insert(directoryPath, QString::fromUtf8(import));
95 QFile mergedPathsListFile(pathToMergedQtConfsList);
96 if (!mergedPathsListFile.open(QFile::ReadOnly | QFile::Text)) {
97 qCritical() <<
"could not open" << mergedPathsListFile.fileName();
100 QHash<QString, QString> partialPathToMergedPath;
101 while (!mergedPathsListFile.atEnd()) {
102 QByteArray row = mergedPathsListFile.readLine().trimmed();
103 QList<QByteArray> parts = row.split(
';');
104 Q_ASSERT(parts.size() == 2);
105 const QString partialFileDirectoryPath =
106 QFileInfo(QString::fromUtf8(parts[0])).absolutePath();
107 const QString mergedFilePath = QString::fromUtf8(parts[1]);
108 partialPathToMergedPath.insert(partialFileDirectoryPath, mergedFilePath);
111 for (
const QString &directoryPath: directoryToNecessaryImports.keys()) {
112 if (!partialPathToMergedPath.contains(directoryPath)) {
113 qCritical() <<
"no merged qt.conf file found for directory" << directoryPath;
116 const QString mergedQtConfFilePath = partialPathToMergedPath.value(directoryPath);
120 QDir().mkpath(QFileInfo(mergedQtConfFilePath).absolutePath());
122 QFile consolidatedQtConfFile(mergedQtConfFilePath);
123 if (!consolidatedQtConfFile.open(QFile::WriteOnly | QFile::Text)) {
124 qCritical() <<
"could not open" << consolidatedQtConfFile.fileName();
127 QTextStream out(&consolidatedQtConfFile);
128 QStringList allIncludes = directoryToNecessaryImports.values(directoryPath);
129 allIncludes.removeDuplicates();
130 out <<
"[Config]\nMergeQtConf = true\n"
131 <<
"[Paths]\nQmlImports = "
132 << allIncludes.join(u",") << Qt::endl;
134 QFile outfile(pathToList + u".done");
135 if (!outfile.open(QFile::WriteOnly | QFile::Text))
137 outfile.write(QByteArray::number(QDateTime::currentSecsSinceEpoch()));