Meson: Compactify mesontools.{cpp,h}

Change-Id: I1f34fc5394aabfba1d2b069f12b9175f410aaf4f
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2024-07-23 08:54:48 +02:00
parent 3ca8c6a0a5
commit c1b113d599
3 changed files with 15 additions and 50 deletions

View File

@@ -46,7 +46,7 @@ ToolWrapper::ToolWrapper(ToolType toolType,
, m_version(read_version(path)) , m_version(read_version(path))
, m_isValid{path.exists() && m_version.isValid} , m_isValid{path.exists() && m_version.isValid}
, m_autoDetected{autoDetected} , m_autoDetected{autoDetected}
, m_id{Utils::Id::generate()} , m_id{Id::generate()}
, m_exe{path} , m_exe{path}
, m_name{name} , m_name{name}
{} {}
@@ -64,21 +64,21 @@ ToolWrapper::ToolWrapper(ToolType toolType,
, m_exe{path} , m_exe{path}
, m_name{name} , 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; ToolWrapper::~ToolWrapper() = default;
void ToolWrapper::setExe(const Utils::FilePath &newExe) void ToolWrapper::setExe(const FilePath &newExe)
{ {
m_exe = newExe; m_exe = newExe;
m_version = read_version(m_exe); 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()) { if (toolPath.toFileInfo().isExecutable()) {
Utils::Process process; Process process;
process.setCommand({ toolPath, { "--version" } }); process.setCommand({ toolPath, { "--version" } });
process.start(); process.start();
if (process.waitForFinished()) if (process.waitForFinished())
@@ -89,7 +89,7 @@ Version ToolWrapper::read_version(const Utils::FilePath &toolPath)
Store ToolWrapper::toVariantMap() const Store ToolWrapper::toVariantMap() const
{ {
Utils::Store data; Store data;
data.insert(Constants::ToolsSettings::NAME_KEY, m_name); data.insert(Constants::ToolsSettings::NAME_KEY, m_name);
data.insert(Constants::ToolsSettings::EXE_KEY, m_exe.toSettings()); data.insert(Constants::ToolsSettings::EXE_KEY, m_exe.toSettings());
data.insert(Constants::ToolsSettings::AUTO_DETECTED_KEY, m_autoDetected); data.insert(Constants::ToolsSettings::AUTO_DETECTED_KEY, m_autoDetected);
@@ -154,7 +154,7 @@ Command ToolWrapper::regenerate(const FilePath &sourceDirectory,
buildDirectory}; buildDirectory};
} }
Command ToolWrapper::introspect(const Utils::FilePath &sourceDirectory) const Command ToolWrapper::introspect(const FilePath &sourceDirectory) const
{ {
return {{m_exe, return {{m_exe,
{"introspect", "--all", QString("%1/meson.build").arg(sourceDirectory.path())}}, {"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) bool run_meson(const Command &command, QIODevice *output)
{ {
Utils::Process process; Process process;
process.setWorkingDirectory(command.workDir); process.setWorkingDirectory(command.workDir);
process.setCommand(command.cmdLine); process.setCommand(command.cmdLine);
process.start(); process.start();
@@ -187,9 +187,8 @@ bool run_meson(const Command &command, QIODevice *output)
return process.exitCode() == 0; 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(), return containsFiles(buildPath.pathAppended(Constants::MESON_INFO_DIR).toString(),
Constants::MESON_INTRO_TESTS, Constants::MESON_INTRO_TESTS,
Constants::MESON_INTRO_TARGETS, 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<ToolWrapper>(ToolType::Ninja, name, exe, itemId));
else
addTool(std::make_shared<ToolWrapper>(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<MesonTools::Tool_t> &&tools) void MesonTools::setTools(std::vector<MesonTools::Tool_t> &&tools)
{ {
std::swap(s_tools, 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)->setExe(exe);
(*item)->setName(name); (*item)->setName(name);
} else { } 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<ToolWrapper>(toolType, name, exe, itemId));
emit instance()->toolAdded(s_tools.back());
} }
} }

View File

@@ -92,17 +92,7 @@ class MesonTools : public QObject
public: public:
using Tool_t = std::shared_ptr<ToolWrapper>; using Tool_t = std::shared_ptr<ToolWrapper>;
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<Tool_t> &&tools); static void setTools(std::vector<Tool_t> &&tools);
static const std::vector<Tool_t> &tools(); static const std::vector<Tool_t> &tools();
static void updateTool(const Utils::Id &itemId, static void updateTool(const Utils::Id &itemId,
@@ -111,7 +101,6 @@ public:
static void removeTool(const Utils::Id &id); static void removeTool(const Utils::Id &id);
static std::shared_ptr<ToolWrapper> toolById(const Utils::Id &id, ToolType toolType); static std::shared_ptr<ToolWrapper> toolById(const Utils::Id &id, ToolType toolType);
static std::shared_ptr<ToolWrapper> autoDetectedTool(ToolType toolType); static std::shared_ptr<ToolWrapper> autoDetectedTool(ToolType toolType);
Q_SIGNAL void toolAdded(const Tool_t &tool); Q_SIGNAL void toolAdded(const Tool_t &tool);

View File

@@ -86,7 +86,7 @@ void MesonToolKitAspectImpl::addTool(const MesonTools::Tool_t &tool)
{ {
QTC_ASSERT(tool, return ); QTC_ASSERT(tool, return );
if (isCompatible(tool)) 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) 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) bool MesonToolKitAspectImpl::isCompatible(const MesonTools::Tool_t &tool)
{ {
return (m_type == ToolType::Meson && MesonTools::isMesonWrapper(tool)) return m_type == tool->toolType();
|| (m_type == ToolType::Ninja && MesonTools::isNinjaWrapper(tool));
} }
void MesonToolKitAspectImpl::loadTools() void MesonToolKitAspectImpl::loadTools()