CMakeTool: Split parsing out of data retrievel methods

Change-Id: I237d90310bc032b7537ab33e0cb181e2163be5a7
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
Tobias Hunger
2018-07-10 14:03:55 +02:00
parent 942bd5f74b
commit 7478c4aef1
2 changed files with 19 additions and 4 deletions

View File

@@ -374,10 +374,13 @@ void CMakeTool::fetchGeneratorsFromHelp() const
Utils::SynchronousProcessResponse response = run({"--help"}); Utils::SynchronousProcessResponse response = run({"--help"});
if (response.result != Utils::SynchronousProcessResponse::Finished) if (response.result != Utils::SynchronousProcessResponse::Finished)
return; return;
parseGeneratorsFromHelp(response.stdOut().split('\n'));
}
void CMakeTool::parseGeneratorsFromHelp(const QStringList &lines) const
{
bool inGeneratorSection = false; bool inGeneratorSection = false;
QHash<QString, QStringList> generatorInfo; QHash<QString, QStringList> generatorInfo;
const QStringList lines = response.stdOut().split('\n');
foreach (const QString &line, lines) { foreach (const QString &line, lines) {
if (line.isEmpty()) if (line.isEmpty())
continue; continue;
@@ -427,9 +430,13 @@ void CMakeTool::fetchVersionFromVersionOutput() const
if (response.result != Utils::SynchronousProcessResponse::Finished) if (response.result != Utils::SynchronousProcessResponse::Finished)
return; return;
parseVersionFormVersionOutput(response.stdOut().split('\n'));
}
void CMakeTool::parseVersionFormVersionOutput(const QStringList &lines) const
{
QRegularExpression versionLine("^cmake.* version ((\\d+).(\\d+).(\\d+).*)$"); QRegularExpression versionLine("^cmake.* version ((\\d+).(\\d+).(\\d+).*)$");
const QString responseText = response.stdOut(); for (const QString &line : lines) {
for (const QStringRef &line : responseText.splitRef(QLatin1Char('\n'))) {
QRegularExpressionMatch match = versionLine.match(line); QRegularExpressionMatch match = versionLine.match(line);
if (!match.hasMatch()) if (!match.hasMatch())
continue; continue;
@@ -448,7 +455,12 @@ void CMakeTool::fetchFromCapabilities() const
if (response.result != Utils::SynchronousProcessResponse::Finished) if (response.result != Utils::SynchronousProcessResponse::Finished)
return; return;
auto doc = QJsonDocument::fromJson(response.stdOut().toUtf8()); parseFromCapabilities(response.stdOut());
}
void CMakeTool::parseFromCapabilities(const QString &input) const
{
auto doc = QJsonDocument::fromJson(input.toUtf8());
if (!doc.isObject()) if (!doc.isObject())
return; return;

View File

@@ -119,8 +119,11 @@ private:
QStringList parseVariableOutput(const QString &output); QStringList parseVariableOutput(const QString &output);
void fetchGeneratorsFromHelp() const; void fetchGeneratorsFromHelp() const;
void parseGeneratorsFromHelp(const QStringList &lines) const;
void fetchVersionFromVersionOutput() const; void fetchVersionFromVersionOutput() const;
void parseVersionFormVersionOutput(const QStringList &lines) const;
void fetchFromCapabilities() const; void fetchFromCapabilities() const;
void parseFromCapabilities(const QString &input) const;
Core::Id m_id; Core::Id m_id;
QString m_displayName; QString m_displayName;