Python: unify reading project files

Also support remote file paths for old style project files and do not
change order of files in the new project file.

Change-Id: I49b0781b26ca33b605aef674a04ee676f1848986
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
David Schulz
2023-06-06 13:11:46 +02:00
parent 6eca1f5dc8
commit 4fa65c4a34

View File

@@ -125,9 +125,9 @@ static QStringList readLines(const FilePath &projectFile)
QSet<QString> visited = { projectFileName }; QSet<QString> visited = { projectFileName };
QStringList lines = { projectFileName }; QStringList lines = { projectFileName };
QFile file(projectFile.toString()); const expected_str<QByteArray> contents = projectFile.fileContents();
if (file.open(QFile::ReadOnly)) { if (contents) {
QTextStream stream(&file); QTextStream stream(contents.value());
while (true) { while (true) {
const QString line = stream.readLine(); const QString line = stream.readLine();
@@ -145,17 +145,17 @@ static QStringList readLines(const FilePath &projectFile)
static QStringList readLinesJson(const FilePath &projectFile, QString *errorMessage) static QStringList readLinesJson(const FilePath &projectFile, QString *errorMessage)
{ {
QStringList lines = { projectFile.fileName() }; const QString projectFileName = projectFile.fileName();
QSet<QString> visited = { projectFileName };
QStringList lines = { projectFileName };
const QJsonObject obj = readObjJson(projectFile, errorMessage); const QJsonObject obj = readObjJson(projectFile, errorMessage);
if (obj.contains("files")) { for (const QJsonValue &file : obj.value("files").toArray()) {
const QJsonValue files = obj.value("files"); const QString fileName = file.toString();
const QJsonArray files_array = files.toArray(); if (visited.contains(fileName))
QSet<QString> visited; continue;
for (const auto &file : files_array) lines.append(fileName);
visited.insert(file.toString()); visited.insert(fileName);
lines.append(Utils::toList(visited));
} }
return lines; return lines;