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_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<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)
{
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<ToolWrapper>(toolType, name, exe, itemId));
emit instance()->toolAdded(s_tools.back());
}
}

View File

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