forked from qt-creator/qt-creator
Meson: Compactify mesontools.{cpp,h}
Change-Id: I1f34fc5394aabfba1d2b069f12b9175f410aaf4f Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
@@ -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()
|
||||||
|
Reference in New Issue
Block a user