diff --git a/src/plugins/mesonprojectmanager/CMakeLists.txt b/src/plugins/mesonprojectmanager/CMakeLists.txt index 45fab3f04f8..39acd196278 100644 --- a/src/plugins/mesonprojectmanager/CMakeLists.txt +++ b/src/plugins/mesonprojectmanager/CMakeLists.txt @@ -10,7 +10,6 @@ add_qtc_plugin(MesonProjectManager buildoptionsmodel.h buildoptionsparser.h common.h - infoparser.h kitdata.h mesonactionsmanager.cpp mesonactionsmanager.h diff --git a/src/plugins/mesonprojectmanager/infoparser.h b/src/plugins/mesonprojectmanager/infoparser.h deleted file mode 100644 index f0131078243..00000000000 --- a/src/plugins/mesonprojectmanager/infoparser.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (C) 2020 Alexis Jeandet. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include "common.h" -#include "mesonpluginconstants.h" - -#include -#include -#include -#include -#include -#include - -namespace MesonProjectManager::Internal { - -class InfoParser -{ - static inline QVersionNumber load_info(const QJsonObject &obj) - { - auto version = obj["meson_version"].toObject(); - return {version["major"].toInt(), version["minor"].toInt(), version["patch"].toInt()}; - } - QVersionNumber m_info; - -public: - InfoParser(const Utils::FilePath &buildDir) - { - Utils::FilePath jsonFile = buildDir / Constants::MESON_INFO_DIR / Constants::MESON_INFO; - auto obj = load(jsonFile.toFSPathString()); - if (obj) - m_info = load_info(*obj); - } - - QVersionNumber info() { return m_info; } -}; - -} // namespace MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/mesoninfoparser.h b/src/plugins/mesonprojectmanager/mesoninfoparser.h index bb1a6ec41e4..0a0feecf614 100644 --- a/src/plugins/mesonprojectmanager/mesoninfoparser.h +++ b/src/plugins/mesonprojectmanager/mesoninfoparser.h @@ -5,16 +5,16 @@ #include "buildoptions.h" #include "buildoptionsparser.h" -#include "infoparser.h" +#include "common.h" #include "target.h" #include +#include + #include -namespace MesonProjectManager { -namespace Internal { -namespace MesonInfoParser { +namespace MesonProjectManager::Internal::MesonInfoParser { class TargetParser { @@ -116,7 +116,6 @@ public: } }; - struct Result { TargetsList targets; @@ -125,12 +124,22 @@ struct Result std::optional mesonInfo; }; +inline QVersionNumber versionNumber(const Utils::FilePath &buildDir) +{ + const Utils::FilePath jsonFile = buildDir / Constants::MESON_INFO_DIR / Constants::MESON_INFO; + auto obj = load(jsonFile.toFSPathString()); + if (!obj) + return {}; + auto version = obj->value("meson_version").toObject(); + return {version["major"].toInt(), version["minor"].toInt(), version["patch"].toInt()}; +} + inline Result parse(const Utils::FilePath &buildDir) { return {TargetParser::targetList(buildDir), BuildOptionsParser{buildDir}.takeBuildOptions(), BuildSystemFilesParser::files(buildDir), - InfoParser{buildDir}.info()}; + versionNumber(buildDir)}; } inline Result parse(const QByteArray &data) @@ -154,11 +163,4 @@ inline Result parse(QIODevice *introFile) return {}; } -inline std::optional mesonInfo(const Utils::FilePath &buildDir) -{ - return InfoParser{buildDir}.info(); -} - -} // namespace MesonInfoParser -} // namespace Internal -} // namespace MesonProjectManager +} // namespace MesonProjectManager::Internal::MesonInfoParser diff --git a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs index 46864a9fb7e..d56f44aaed5 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs +++ b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs @@ -27,7 +27,6 @@ Project { "mesoninfoparser.h", "buildoptionsparser.h", "common.h", - "infoparser.h", "target.h", "mesonpluginconstants.h", "mesonprojectplugin.cpp", diff --git a/src/plugins/mesonprojectmanager/mesonprojectparser.cpp b/src/plugins/mesonprojectmanager/mesonprojectparser.cpp index 06ff453ebd3..cf4fb33cb02 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectparser.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectparser.cpp @@ -309,9 +309,9 @@ bool MesonProjectParser::matchesKit(const KitData &kit) bool MesonProjectParser::usesSameMesonVersion(const FilePath &buildPath) { - auto info = MesonInfoParser::mesonInfo(buildPath); + auto version = MesonInfoParser::versionNumber(buildPath); auto meson = MesonTools::toolById(m_meson, ToolType::Meson); - return info && meson && *info == meson->version(); + return !version.isNull() && meson && version == meson->version(); } bool MesonProjectParser::run(const Command &command,