forked from qt-creator/qt-creator
CMakeTool: Split parsing out of data retrievel methods
Change-Id: I237d90310bc032b7537ab33e0cb181e2163be5a7 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user