Meson: Start simplification of tool loading

Change-Id: I5a70c17bd219dc8dc18061842808166b76b26828
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2024-07-22 17:14:09 +02:00
parent c76025ed41
commit 36a6fa1664
8 changed files with 102 additions and 115 deletions

View File

@@ -20,8 +20,12 @@ namespace Internal {
// ToolWrapper base
ToolWrapper::ToolWrapper(const QString &name, const Utils::FilePath &path, bool autoDetected)
: m_version(read_version(path))
ToolWrapper::ToolWrapper(ToolType toolType,
const QString &name,
const FilePath &path,
bool autoDetected)
: m_toolType(toolType)
, m_version(read_version(path))
, m_isValid{path.exists() && m_version.isValid}
, m_autoDetected{autoDetected}
, m_id{Utils::Id::generate()}
@@ -29,11 +33,13 @@ ToolWrapper::ToolWrapper(const QString &name, const Utils::FilePath &path, bool
, m_name{name}
{}
ToolWrapper::ToolWrapper(const QString &name,
const Utils::FilePath &path,
const Utils::Id &id,
ToolWrapper::ToolWrapper(ToolType toolType,
const QString &name,
const FilePath &path,
const Id &id,
bool autoDetected)
: m_version(read_version(path))
: m_toolType(toolType)
, m_version(read_version(path))
, m_isValid{path.exists() && m_version.isValid}
, m_autoDetected{autoDetected}
, m_id{id}
@@ -61,6 +67,29 @@ Version ToolWrapper::read_version(const Utils::FilePath &toolPath)
return {};
}
Store ToolWrapper::toVariantMap() const
{
Utils::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);
data.insert(Constants::ToolsSettings::ID_KEY, m_id.toSetting());
if (m_toolType == ToolType::Meson)
data.insert(Constants::ToolsSettings::TOOL_TYPE_KEY, Constants::ToolsSettings::TOOL_TYPE_MESON);
else
data.insert(Constants::ToolsSettings::TOOL_TYPE_KEY, Constants::ToolsSettings::TOOL_TYPE_NINJA);
return data;
}
ToolWrapper *ToolWrapper::fromVariantMap(const Store &data, ToolType toolType)
{
return new ToolWrapper(toolType,
data[Constants::ToolsSettings::NAME_KEY].toString(),
Utils::FilePath::fromSettings(data[Constants::ToolsSettings::EXE_KEY]),
Utils::Id::fromSetting(data[Constants::ToolsSettings::ID_KEY]),
data[Constants::ToolsSettings::AUTO_DETECTED_KEY].toBool());
}
static std::optional<FilePath> findTool(const QStringList &exeNames)
{
Environment systemEnvironment = Environment::systemEnvironment();
@@ -133,11 +162,6 @@ Command MesonWrapper::introspect(const Utils::FilePath &sourceDirectory) const
sourceDirectory};
}
std::optional<FilePath> MesonWrapper::find()
{
return findTool({"meson.py", "meson"});
}
template<typename File_t>
bool containsFiles(const QString &path, const File_t &file)
{
@@ -178,9 +202,12 @@ bool isSetup(const Utils::FilePath &buildPath)
Constants::MESON_INTRO_BUILDSYSTEM_FILES);
}
// NinjaWrapper
std::optional<FilePath> findMesonTool()
{
return findTool({"meson.py", "meson"});
}
std::optional<FilePath> NinjaWrapper::find()
std::optional<FilePath> findNinjaTool()
{
return findTool({"ninja", "ninja-build"});
}