From c1b113d599b91911ad5b00eb30333cd32a65e4dd Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 23 Jul 2024 08:54:48 +0200 Subject: [PATCH] Meson: Compactify mesontools.{cpp,h} Change-Id: I1f34fc5394aabfba1d2b069f12b9175f410aaf4f Reviewed-by: Jarek Kobus --- .../mesonprojectmanager/mesontools.cpp | 49 +++++-------------- src/plugins/mesonprojectmanager/mesontools.h | 11 ----- .../toolkitaspectwidget.cpp | 5 +- 3 files changed, 15 insertions(+), 50 deletions(-) diff --git a/src/plugins/mesonprojectmanager/mesontools.cpp b/src/plugins/mesonprojectmanager/mesontools.cpp index f2e4929fd60..ae40ebd507b 100644 --- a/src/plugins/mesonprojectmanager/mesontools.cpp +++ b/src/plugins/mesonprojectmanager/mesontools.cpp @@ -46,7 +46,7 @@ ToolWrapper::ToolWrapper(ToolType toolType, , m_version(read_version(path)) , m_isValid{path.exists() && m_version.isValid} , m_autoDetected{autoDetected} - , m_id{Utils::Id::generate()} + , m_id{Id::generate()} , m_exe{path} , m_name{name} {} @@ -64,21 +64,21 @@ ToolWrapper::ToolWrapper(ToolType toolType, , m_exe{path} , m_name{name} { - QTC_ASSERT(m_id.isValid(), m_id = Utils::Id::generate()); + QTC_ASSERT(m_id.isValid(), m_id = Id::generate()); } ToolWrapper::~ToolWrapper() = default; -void ToolWrapper::setExe(const Utils::FilePath &newExe) +void ToolWrapper::setExe(const FilePath &newExe) { m_exe = newExe; m_version = read_version(m_exe); } -Version ToolWrapper::read_version(const Utils::FilePath &toolPath) +Version ToolWrapper::read_version(const FilePath &toolPath) { if (toolPath.toFileInfo().isExecutable()) { - Utils::Process process; + Process process; process.setCommand({ toolPath, { "--version" } }); process.start(); if (process.waitForFinished()) @@ -89,7 +89,7 @@ Version ToolWrapper::read_version(const Utils::FilePath &toolPath) Store ToolWrapper::toVariantMap() const { - Utils::Store data; + Store data; data.insert(Constants::ToolsSettings::NAME_KEY, m_name); data.insert(Constants::ToolsSettings::EXE_KEY, m_exe.toSettings()); data.insert(Constants::ToolsSettings::AUTO_DETECTED_KEY, m_autoDetected); @@ -154,7 +154,7 @@ Command ToolWrapper::regenerate(const FilePath &sourceDirectory, buildDirectory}; } -Command ToolWrapper::introspect(const Utils::FilePath &sourceDirectory) const +Command ToolWrapper::introspect(const FilePath &sourceDirectory) const { return {{m_exe, {"introspect", "--all", QString("%1/meson.build").arg(sourceDirectory.path())}}, @@ -175,7 +175,7 @@ bool containsFiles(const QString &path, const File_t &file, const T &...files) bool run_meson(const Command &command, QIODevice *output) { - Utils::Process process; + Process process; process.setWorkingDirectory(command.workDir); process.setCommand(command.cmdLine); process.start(); @@ -187,9 +187,8 @@ bool run_meson(const Command &command, QIODevice *output) return process.exitCode() == 0; } -bool isSetup(const Utils::FilePath &buildPath) +bool isSetup(const FilePath &buildPath) { - using namespace Utils; return containsFiles(buildPath.pathAppended(Constants::MESON_INFO_DIR).toString(), Constants::MESON_INTRO_TESTS, Constants::MESON_INTRO_TARGETS, @@ -268,31 +267,6 @@ static void fixAutoDetected(ToolType toolType) } } -bool MesonTools::isMesonWrapper(const MesonTools::Tool_t &tool) -{ - return tool->toolType() == ToolType::Meson; -} - -bool MesonTools::isNinjaWrapper(const MesonTools::Tool_t &tool) -{ - return tool->toolType() == ToolType::Ninja; -} - -void MesonTools::addTool(const Id &itemId, const QString &name, const FilePath &exe) -{ - // TODO improve this - if (exe.fileName().contains("ninja")) - addTool(std::make_shared(ToolType::Ninja, name, exe, itemId)); - else - addTool(std::make_shared(ToolType::Meson, name, exe, itemId)); -} - -void MesonTools::addTool(Tool_t meson) -{ - s_tools.emplace_back(std::move(meson)); - emit instance()->toolAdded(s_tools.back()); -} - void MesonTools::setTools(std::vector &&tools) { std::swap(s_tools, tools); @@ -314,7 +288,10 @@ void MesonTools::updateTool(const Id &itemId, const QString &name, const FilePat (*item)->setExe(exe); (*item)->setName(name); } else { - addTool(itemId, name, exe); + // TODO improve this + const ToolType toolType = exe.fileName().contains("ninja") ? ToolType::Ninja : ToolType::Meson; + s_tools.emplace_back(std::make_shared(toolType, name, exe, itemId)); + emit instance()->toolAdded(s_tools.back()); } } diff --git a/src/plugins/mesonprojectmanager/mesontools.h b/src/plugins/mesonprojectmanager/mesontools.h index 00f91bac164..36dcac7727f 100644 --- a/src/plugins/mesonprojectmanager/mesontools.h +++ b/src/plugins/mesonprojectmanager/mesontools.h @@ -92,17 +92,7 @@ class MesonTools : public QObject public: using Tool_t = std::shared_ptr; - static bool isMesonWrapper(const Tool_t &tool); - static bool isNinjaWrapper(const Tool_t &tool); - - static void addTool(const Utils::Id &itemId, - const QString &name, - const Utils::FilePath &exe); - - static void addTool(Tool_t meson); - static void setTools(std::vector &&tools); - static const std::vector &tools(); static void updateTool(const Utils::Id &itemId, @@ -111,7 +101,6 @@ public: static void removeTool(const Utils::Id &id); static std::shared_ptr toolById(const Utils::Id &id, ToolType toolType); - static std::shared_ptr autoDetectedTool(ToolType toolType); Q_SIGNAL void toolAdded(const Tool_t &tool); diff --git a/src/plugins/mesonprojectmanager/toolkitaspectwidget.cpp b/src/plugins/mesonprojectmanager/toolkitaspectwidget.cpp index 41da7967e4c..7f28ebea5ab 100644 --- a/src/plugins/mesonprojectmanager/toolkitaspectwidget.cpp +++ b/src/plugins/mesonprojectmanager/toolkitaspectwidget.cpp @@ -86,7 +86,7 @@ void MesonToolKitAspectImpl::addTool(const MesonTools::Tool_t &tool) { QTC_ASSERT(tool, return ); if (isCompatible(tool)) - this->m_toolsComboBox->addItem(tool->name(), tool->id().toSetting()); + m_toolsComboBox->addItem(tool->name(), tool->id().toSetting()); } void MesonToolKitAspectImpl::removeTool(const MesonTools::Tool_t &tool) @@ -123,8 +123,7 @@ int MesonToolKitAspectImpl::indexOf(const Id &id) bool MesonToolKitAspectImpl::isCompatible(const MesonTools::Tool_t &tool) { - return (m_type == ToolType::Meson && MesonTools::isMesonWrapper(tool)) - || (m_type == ToolType::Ninja && MesonTools::isNinjaWrapper(tool)); + return m_type == tool->toolType(); } void MesonToolKitAspectImpl::loadTools()