forked from qt-creator/qt-creator
SdkTool: Use slightly less repetitive approach for operation interface
Change-Id: I4d1d205c610df39be6a810dfda3049ae14a06806 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -97,7 +97,7 @@ int AddAbiFlavor::execute() const
|
||||
if (map.isEmpty())
|
||||
map = initializeAbiFlavors();
|
||||
|
||||
QVariantMap result = addAbiFlavor(map, m_oses, m_flavor);
|
||||
QVariantMap result = addAbiFlavor(map);
|
||||
|
||||
if (result.isEmpty() || result == map)
|
||||
return 2;
|
||||
@@ -113,7 +113,7 @@ bool AddAbiFlavor::test() const
|
||||
|| !map.contains(QLatin1String(VERSION)))
|
||||
return false;
|
||||
|
||||
map = addAbiFlavor(map, {"linux", "windows"}, "foo");
|
||||
map = AddAbiFlavorData{{"linux", "windows"}, "foo"}.addAbiFlavor(map);
|
||||
|
||||
if (map.count() != 2
|
||||
|| !map.contains(QLatin1String(VERSION))
|
||||
@@ -126,7 +126,7 @@ bool AddAbiFlavor::test() const
|
||||
return false;
|
||||
|
||||
// Ignore known flavors:
|
||||
const QVariantMap result = addAbiFlavor(map, {"linux"}, "foo");
|
||||
const QVariantMap result = AddAbiFlavorData({{"linux"}, "foo"}).addAbiFlavor(map);;
|
||||
|
||||
if (map != result)
|
||||
return false;
|
||||
@@ -135,37 +135,35 @@ bool AddAbiFlavor::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap AddAbiFlavor::addAbiFlavor(const QVariantMap &map,
|
||||
const QStringList &oses,
|
||||
const QString &flavor)
|
||||
QVariantMap AddAbiFlavorData::addAbiFlavor(const QVariantMap &map) const
|
||||
{
|
||||
// Sanity check: Is flavor already set in abi file?
|
||||
if (exists(map, flavor)) {
|
||||
std::cerr << "Error: flavor " << qPrintable(flavor) << " already defined as extra ABI flavor." << std::endl;
|
||||
if (exists(map, m_flavor)) {
|
||||
std::cerr << "Error: flavor " << qPrintable(m_flavor) << " already defined as extra ABI flavor." << std::endl;
|
||||
return map;
|
||||
}
|
||||
|
||||
QVariantMap result = map;
|
||||
QVariantMap flavorMap = map.value(QLatin1String(FLAVORS)).toMap();
|
||||
flavorMap.insert(flavor, oses);
|
||||
flavorMap.insert(m_flavor, m_oses);
|
||||
result.insert(QLatin1String(FLAVORS), flavorMap);
|
||||
return result;
|
||||
}
|
||||
|
||||
QVariantMap AddAbiFlavor::initializeAbiFlavors()
|
||||
QVariantMap AddAbiFlavorData::initializeAbiFlavors()
|
||||
{
|
||||
QVariantMap map;
|
||||
map.insert(QLatin1String(VERSION), 1);
|
||||
return map;
|
||||
}
|
||||
|
||||
bool AddAbiFlavor::exists(const QString &flavor)
|
||||
bool AddAbiFlavorData::exists(const QString &flavor)
|
||||
{
|
||||
QVariantMap map = load(QLatin1String(ABI_FILE_ID));
|
||||
QVariantMap map = Operation::load(QLatin1String(ABI_FILE_ID));
|
||||
return exists(map, flavor);
|
||||
}
|
||||
|
||||
bool AddAbiFlavor::exists(const QVariantMap &map, const QString &flavor)
|
||||
bool AddAbiFlavorData::exists(const QVariantMap &map, const QString &flavor)
|
||||
{
|
||||
const QVariantMap flavorMap = map.value(QLatin1String(FLAVORS)).toMap();
|
||||
return flavorMap.contains(flavor);
|
||||
|
@@ -27,32 +27,32 @@
|
||||
|
||||
#include "operation.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
class AddAbiFlavor : public Operation
|
||||
class AddAbiFlavorData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap addAbiFlavor(const QVariantMap &map,
|
||||
const QStringList &oses, const QString &flavor);
|
||||
QVariantMap addAbiFlavor(const QVariantMap &map) const;
|
||||
|
||||
static QVariantMap initializeAbiFlavors();
|
||||
|
||||
static bool exists(const QString &flavor);
|
||||
static bool exists(const QVariantMap &map, const QString &flavor);
|
||||
|
||||
private:
|
||||
QStringList m_oses;
|
||||
QString m_flavor;
|
||||
};
|
||||
|
||||
class AddAbiFlavor : public Operation, public AddAbiFlavorData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
};
|
||||
|
@@ -122,7 +122,7 @@ int AddCMakeOperation::execute() const
|
||||
if (map.isEmpty())
|
||||
map = initializeCMake();
|
||||
|
||||
QVariantMap result = addCMake(map, m_id, m_displayName, m_path, m_extra);
|
||||
QVariantMap result = addCMake(map);
|
||||
if (result.isEmpty() || map == result)
|
||||
return 2;
|
||||
|
||||
@@ -135,8 +135,7 @@ bool AddCMakeOperation::test() const
|
||||
QVariantMap map = initializeCMake();
|
||||
|
||||
// Add toolchain:
|
||||
map = addCMake(map, "testId", "name", "/tmp/test",
|
||||
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue")));
|
||||
map = AddCMakeData{"testId", "name", "/tmp/test", {{"ExtraKey", QVariant("ExtraValue")}}}.addCMake(map);
|
||||
if (map.value(COUNT).toInt() != 1
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '0'))
|
||||
return false;
|
||||
@@ -150,14 +149,14 @@ bool AddCMakeOperation::test() const
|
||||
return false;
|
||||
|
||||
// Ignore same Id:
|
||||
QVariantMap unchanged = addCMake(map, "testId", "name2", "/tmp/test2",
|
||||
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue2")));
|
||||
QVariantMap unchanged = AddCMakeData{"testId", "name2", "/tmp/test2", {{"ExtraKey", QVariant("ExtraValue2")}}}
|
||||
.addCMake(map);
|
||||
if (!unchanged.isEmpty())
|
||||
return false;
|
||||
|
||||
// add 2nd cmake
|
||||
map = addCMake(map, "{some-cm-id}", "name", "/tmp/test",
|
||||
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue")));
|
||||
map = AddCMakeData{"{some-cm-id}", "name", "/tmp/test", {{"ExtraKey", QVariant("ExtraValue")}}}
|
||||
.addCMake(map);
|
||||
if (map.value(COUNT).toInt() != 2
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '0')
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '1'))
|
||||
@@ -183,13 +182,11 @@ bool AddCMakeOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap AddCMakeOperation::addCMake(const QVariantMap &map, const QString &id,
|
||||
const QString &displayName, const QString &path,
|
||||
const KeyValuePairList &extra)
|
||||
QVariantMap AddCMakeData::addCMake(const QVariantMap &map) const
|
||||
{
|
||||
// Sanity check: Does the Id already exist?
|
||||
if (exists(map, id)) {
|
||||
std::cerr << "Error: Id " << qPrintable(id) << " already defined for tool chains." << std::endl;
|
||||
if (exists(map, m_id)) {
|
||||
std::cerr << "Error: Id " << qPrintable(m_id) << " already defined for tool chains." << std::endl;
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
@@ -206,20 +203,20 @@ QVariantMap AddCMakeOperation::addCMake(const QVariantMap &map, const QString &i
|
||||
const QString cm = QString::fromLatin1(PREFIX) + QString::number(count);
|
||||
|
||||
KeyValuePairList data;
|
||||
data << KeyValuePair({cm, ID_KEY}, QVariant(id));
|
||||
data << KeyValuePair({cm, DISPLAYNAME_KEY}, QVariant(displayName));
|
||||
data << KeyValuePair({cm, ID_KEY}, QVariant(m_id));
|
||||
data << KeyValuePair({cm, DISPLAYNAME_KEY}, QVariant(m_displayName));
|
||||
data << KeyValuePair({cm, AUTODETECTED_KEY}, QVariant(true));
|
||||
data << KeyValuePair({cm, PATH_KEY}, Utils::FilePath::fromUserInput(path).toVariant());
|
||||
data << KeyValuePair({cm, PATH_KEY}, Utils::FilePath::fromUserInput(m_path).toVariant());
|
||||
KeyValuePairList extraList;
|
||||
foreach (const KeyValuePair &pair, extra)
|
||||
foreach (const KeyValuePair &pair, m_extra)
|
||||
extraList << KeyValuePair(QStringList({cm}) << pair.key, pair.value);
|
||||
data.append(extraList);
|
||||
data << KeyValuePair(COUNT, QVariant(count + 1));
|
||||
|
||||
return AddKeysOperation::addKeys(result, data);
|
||||
return AddKeysData{data}.addKeys(result);
|
||||
}
|
||||
|
||||
QVariantMap AddCMakeOperation::initializeCMake()
|
||||
QVariantMap AddCMakeData::initializeCMake()
|
||||
{
|
||||
QVariantMap map;
|
||||
map.insert(COUNT, 0);
|
||||
@@ -227,7 +224,7 @@ QVariantMap AddCMakeOperation::initializeCMake()
|
||||
return map;
|
||||
}
|
||||
|
||||
bool AddCMakeOperation::exists(const QVariantMap &map, const QString &id)
|
||||
bool AddCMakeData::exists(const QVariantMap &map, const QString &id)
|
||||
{
|
||||
QStringList valueKeys = FindValueOperation::findValue(map, id);
|
||||
// support old settings using QByteArray for id's
|
||||
@@ -241,7 +238,7 @@ bool AddCMakeOperation::exists(const QVariantMap &map, const QString &id)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AddCMakeOperation::exists(const QString &id)
|
||||
bool AddCMakeData::exists(const QString &id)
|
||||
{
|
||||
QVariantMap map = Operation::load("cmaketools");
|
||||
return exists(map, id);
|
||||
|
@@ -27,34 +27,34 @@
|
||||
|
||||
#include "operation.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
class AddCMakeOperation : public Operation
|
||||
class AddCMakeData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap addCMake(const QVariantMap &map, const QString &id,
|
||||
const QString &displayName, const QString &path,
|
||||
const KeyValuePairList &extra);
|
||||
QVariantMap addCMake(const QVariantMap &map) const;
|
||||
|
||||
static QVariantMap initializeCMake();
|
||||
|
||||
static bool exists(const QString &id);
|
||||
static bool exists(const QVariantMap &map, const QString &id);
|
||||
|
||||
private:
|
||||
QString m_id;
|
||||
QString m_displayName;
|
||||
QString m_path;
|
||||
KeyValuePairList m_extra;
|
||||
};
|
||||
|
||||
class AddCMakeOperation : public Operation, public AddCMakeData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
};
|
||||
|
@@ -144,8 +144,7 @@ int AddDebuggerOperation::execute() const
|
||||
if (map.isEmpty())
|
||||
map = initializeDebuggers();
|
||||
|
||||
QVariantMap result = addDebugger(map, m_id, m_displayName, m_engine, m_binary, m_abis,
|
||||
m_extra);
|
||||
QVariantMap result = addDebugger(map);
|
||||
|
||||
if (result.isEmpty() || map == result)
|
||||
return 2;
|
||||
@@ -169,13 +168,10 @@ bool AddDebuggerOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap AddDebuggerOperation::addDebugger(const QVariantMap &map,
|
||||
const QString &id, const QString &displayName,
|
||||
int engine, const QString &binary,
|
||||
const QStringList &abis, const KeyValuePairList &extra)
|
||||
QVariantMap AddDebuggerData::addDebugger(const QVariantMap &map) const
|
||||
{
|
||||
// Sanity check: Make sure autodetection source is not in use already:
|
||||
QStringList valueKeys = FindValueOperation::findValue(map, QVariant(id));
|
||||
QStringList valueKeys = FindValueOperation::findValue(map, QVariant(m_id));
|
||||
bool hasId = false;
|
||||
foreach (const QString &k, valueKeys) {
|
||||
if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(ID))) {
|
||||
@@ -184,7 +180,7 @@ QVariantMap AddDebuggerOperation::addDebugger(const QVariantMap &map,
|
||||
}
|
||||
}
|
||||
if (hasId) {
|
||||
std::cerr << "Error: Id " << qPrintable(id) << " already defined as debugger." << std::endl;
|
||||
std::cerr << "Error: Id " << qPrintable(m_id) << " already defined as debugger." << std::endl;
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
@@ -204,27 +200,27 @@ QVariantMap AddDebuggerOperation::addDebugger(const QVariantMap &map,
|
||||
|
||||
// insert data:
|
||||
KeyValuePairList data;
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(ID), QVariant(id));
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(ID), QVariant(m_id));
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(DISPLAYNAME),
|
||||
QVariant(displayName));
|
||||
QVariant(m_displayName));
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(AUTODETECTED), QVariant(true));
|
||||
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(ABIS), QVariant(abis));
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(ENGINE_TYPE), QVariant(engine));
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(ABIS), QVariant(m_abis));
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(ENGINE_TYPE), QVariant(m_engine));
|
||||
data << KeyValuePair(QStringList() << debugger << QLatin1String(BINARY),
|
||||
Utils::FilePath::fromUserInput(binary).toVariant());
|
||||
Utils::FilePath::fromUserInput(m_binary).toVariant());
|
||||
|
||||
data << KeyValuePair(QStringList() << QLatin1String(COUNT), QVariant(count + 1));
|
||||
|
||||
KeyValuePairList qtExtraList;
|
||||
foreach (const KeyValuePair &pair, extra)
|
||||
foreach (const KeyValuePair &pair, m_extra)
|
||||
qtExtraList << KeyValuePair(QStringList() << debugger << pair.key, pair.value);
|
||||
data.append(qtExtraList);
|
||||
|
||||
return AddKeysOperation::addKeys(cleaned, data);
|
||||
return AddKeysData{data}.addKeys(cleaned);
|
||||
}
|
||||
|
||||
QVariantMap AddDebuggerOperation::initializeDebuggers()
|
||||
QVariantMap AddDebuggerData::initializeDebuggers()
|
||||
{
|
||||
QVariantMap map;
|
||||
map.insert(QLatin1String(VERSION), 1);
|
||||
|
@@ -27,31 +27,13 @@
|
||||
|
||||
#include "operation.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
class AddDebuggerOperation : public Operation
|
||||
class AddDebuggerData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap addDebugger(const QVariantMap &map,
|
||||
const QString &id, const QString &displayName,
|
||||
int engine, const QString &binary,
|
||||
const QStringList &abis, const KeyValuePairList &extra);
|
||||
QVariantMap addDebugger(const QVariantMap &map) const;
|
||||
|
||||
static QVariantMap initializeDebuggers();
|
||||
|
||||
private:
|
||||
QString m_id;
|
||||
QString m_displayName;
|
||||
int m_engine = 0;
|
||||
@@ -59,3 +41,19 @@ private:
|
||||
QStringList m_abis;
|
||||
KeyValuePairList m_extra;
|
||||
};
|
||||
|
||||
class AddDebuggerOperation : public Operation, public AddDebuggerData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
};
|
||||
|
@@ -247,10 +247,7 @@ int AddDeviceOperation::execute() const
|
||||
if (map.isEmpty())
|
||||
map = initializeDevices();
|
||||
|
||||
QVariantMap result = addDevice(map, m_id, m_displayName, m_type, m_authentication,
|
||||
m_b2q_platformHardware, m_b2q_platformSoftware, m_debugServer,
|
||||
m_freePortsSpec, m_host, m_keyFile, m_origin, m_osType,
|
||||
m_password, m_sshPort, m_timeout, m_uname, m_version, m_extra);
|
||||
QVariantMap result = addDevice(map);
|
||||
|
||||
if (result.isEmpty() || map == result)
|
||||
return 2;
|
||||
@@ -263,13 +260,15 @@ bool AddDeviceOperation::test() const
|
||||
{
|
||||
QVariantMap map = initializeDevices();
|
||||
|
||||
QVariantMap result = addDevice(map, QLatin1String("test id"), QLatin1String("test name"),
|
||||
1, 2, QLatin1String("HW"), QLatin1String("SW"),
|
||||
QLatin1String("debugServer"), QLatin1String("ports"),
|
||||
QLatin1String("host"), QLatin1String("keyfile"), 3,
|
||||
QLatin1String("ostype"), QLatin1String("passwd"), 4, 5,
|
||||
QLatin1String("uname"), 6, KeyValuePairList());
|
||||
|
||||
AddDeviceData devData = {
|
||||
QLatin1String("test id"), QLatin1String("test name"),
|
||||
1, 2, QLatin1String("HW"), QLatin1String("SW"),
|
||||
QLatin1String("debugServer"), QLatin1String("ports"),
|
||||
QLatin1String("host"), QLatin1String("keyfile"), 3,
|
||||
QLatin1String("ostype"), QLatin1String("passwd"), 4, 5,
|
||||
QLatin1String("uname"), 6, KeyValuePairList()
|
||||
};
|
||||
QVariantMap result = devData.addDevice(map);
|
||||
QVariantMap data = result.value(QLatin1String(DEVICEMANAGER_ID)).toMap();
|
||||
QVariantList devList = data.value(QLatin1String(DEVICE_LIST_ID)).toList();
|
||||
if (devList.count() != 1)
|
||||
@@ -312,30 +311,38 @@ bool AddDeviceOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap AddDeviceOperation::addDevice(const QVariantMap &map,
|
||||
const QString &id, const QString &displayName, int type,
|
||||
int auth, const QString &hwPlatform, const QString &swPlatform,
|
||||
const QString &debugServer, const QString &freePorts,
|
||||
const QString &host, const QString &keyFile,
|
||||
int origin, const QString &osType, const QString &passwd,
|
||||
int sshPort, int timeout, const QString &uname, int version,
|
||||
const KeyValuePairList &extra)
|
||||
QVariantMap AddDeviceData::addDevice(const QVariantMap &map) const
|
||||
{
|
||||
QVariantMap result = map;
|
||||
if (exists(map, id)) {
|
||||
std::cerr << "Device " << qPrintable(id) << " already exists!" << std::endl;
|
||||
if (exists(map, m_id)) {
|
||||
std::cerr << "Device " << qPrintable(m_id) << " already exists!" << std::endl;
|
||||
return result;
|
||||
}
|
||||
|
||||
QVariantMap dmMap = map.value(QLatin1String(DEVICEMANAGER_ID)).toMap();
|
||||
QVariantList devList = dmMap.value(QLatin1String(DEVICE_LIST_ID)).toList();
|
||||
|
||||
QVariantMap devMap
|
||||
= AddKeysOperation::addKeys(QVariantMap(),
|
||||
createDevice(id, displayName, type, auth, hwPlatform,
|
||||
swPlatform, debugServer, freePorts, host,
|
||||
keyFile, origin, osType, passwd, sshPort,
|
||||
timeout, uname, version, extra));
|
||||
KeyValuePairList dev;
|
||||
dev.append(KeyValuePair(QLatin1String(DEVICE_ID_ID), QVariant(m_id)));
|
||||
dev.append(KeyValuePair(QLatin1String("Name"), QVariant(m_displayName)));
|
||||
dev.append(KeyValuePair(QLatin1String("Type"), QVariant(m_type)));
|
||||
dev.append(KeyValuePair(QLatin1String("Authentication"), QVariant(m_authentication)));
|
||||
dev.append(KeyValuePair(QLatin1String("Boot2Qt.PlatformInfoHardware"), QVariant(m_b2q_platformHardware)));
|
||||
dev.append(KeyValuePair(QLatin1String("Boot2Qt.PlatformInfoSoftware"), QVariant(m_b2q_platformSoftware)));
|
||||
dev.append(KeyValuePair(QLatin1String("DebugServerKey"), QVariant(m_debugServer)));
|
||||
dev.append(KeyValuePair(QLatin1String("FreePortsSpec"), QVariant(m_freePortsSpec)));
|
||||
dev.append(KeyValuePair(QLatin1String("Host"), QVariant(m_host)));
|
||||
dev.append(KeyValuePair(QLatin1String("KeyFile"), QVariant(m_keyFile)));
|
||||
dev.append(KeyValuePair(QLatin1String("Origin"), QVariant(m_origin)));
|
||||
dev.append(KeyValuePair(QLatin1String("OsType"), QVariant(m_osType)));
|
||||
dev.append(KeyValuePair(QLatin1String("Password"), QVariant(m_password)));
|
||||
dev.append(KeyValuePair(QLatin1String("SshPort"), QVariant(m_sshPort)));
|
||||
dev.append(KeyValuePair(QLatin1String("Timeout"), QVariant(m_timeout)));
|
||||
dev.append(KeyValuePair(QLatin1String("Uname"), QVariant(m_uname)));
|
||||
dev.append(KeyValuePair(QLatin1String("Version"), QVariant(m_version)));
|
||||
dev.append(m_extra);
|
||||
|
||||
QVariantMap devMap = AddKeysData{dev}.addKeys(QVariantMap());
|
||||
|
||||
devList.append(devMap);
|
||||
|
||||
@@ -346,7 +353,7 @@ QVariantMap AddDeviceOperation::addDevice(const QVariantMap &map,
|
||||
return result;
|
||||
}
|
||||
|
||||
QVariantMap AddDeviceOperation::initializeDevices()
|
||||
QVariantMap AddDeviceData::initializeDevices()
|
||||
{
|
||||
QVariantMap dmData;
|
||||
dmData.insert(QLatin1String(DEFAULT_DEVICES_ID), QVariantMap());
|
||||
@@ -357,13 +364,13 @@ QVariantMap AddDeviceOperation::initializeDevices()
|
||||
return data;
|
||||
}
|
||||
|
||||
bool AddDeviceOperation::exists(const QString &id)
|
||||
bool AddDeviceData::exists(const QString &id)
|
||||
{
|
||||
QVariantMap map = load(QLatin1String("Devices"));
|
||||
QVariantMap map = Operation::load(QLatin1String("Devices"));
|
||||
return exists(map, id);
|
||||
}
|
||||
|
||||
bool AddDeviceOperation::exists(const QVariantMap &map, const QString &id)
|
||||
bool AddDeviceData::exists(const QVariantMap &map, const QString &id)
|
||||
{
|
||||
if (id == QLatin1String(INTERNAL_DSEKTOP_DEVICE_ID))
|
||||
return true;
|
||||
@@ -377,37 +384,3 @@ bool AddDeviceOperation::exists(const QVariantMap &map, const QString &id)
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Operation::KeyValuePairList AddDeviceOperation::createDevice(const QString &id, const QString &displayName,
|
||||
int type, int auth, const QString &hwPlatform,
|
||||
const QString &swPlatform, const QString &debugServer,
|
||||
const QString &freePorts, const QString &host,
|
||||
const QString &keyFile, int origin,
|
||||
const QString &osType, const QString &passwd,
|
||||
int sshPort, int timeout, const QString &uname,
|
||||
int version, const Operation::KeyValuePairList &extra)
|
||||
{
|
||||
Operation::KeyValuePairList dev;
|
||||
dev.append(KeyValuePair(QLatin1String(DEVICE_ID_ID), QVariant(id)));
|
||||
dev.append(KeyValuePair(QLatin1String("Name"), QVariant(displayName)));
|
||||
dev.append(KeyValuePair(QLatin1String("Type"), QVariant(type)));
|
||||
|
||||
dev.append(KeyValuePair(QLatin1String("Authentication"), QVariant(auth)));
|
||||
dev.append(KeyValuePair(QLatin1String("Boot2Qt.PlatformInfoHardware"), QVariant(hwPlatform)));
|
||||
dev.append(KeyValuePair(QLatin1String("Boot2Qt.PlatformInfoSoftware"), QVariant(swPlatform)));
|
||||
dev.append(KeyValuePair(QLatin1String("DebugServerKey"), QVariant(debugServer)));
|
||||
dev.append(KeyValuePair(QLatin1String("FreePortsSpec"), QVariant(freePorts)));
|
||||
dev.append(KeyValuePair(QLatin1String("Host"), QVariant(host)));
|
||||
dev.append(KeyValuePair(QLatin1String("KeyFile"), QVariant(keyFile)));
|
||||
dev.append(KeyValuePair(QLatin1String("Origin"), QVariant(origin)));
|
||||
dev.append(KeyValuePair(QLatin1String("OsType"), QVariant(osType)));
|
||||
dev.append(KeyValuePair(QLatin1String("Password"), QVariant(passwd)));
|
||||
dev.append(KeyValuePair(QLatin1String("SshPort"), QVariant(sshPort)));
|
||||
dev.append(KeyValuePair(QLatin1String("Timeout"), QVariant(timeout)));
|
||||
dev.append(KeyValuePair(QLatin1String("Uname"), QVariant(uname)));
|
||||
dev.append(KeyValuePair(QLatin1String("Version"), QVariant(version)));
|
||||
|
||||
dev.append(extra);
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
@@ -35,60 +35,48 @@ extern const char DEVICE_LIST_ID[];
|
||||
|
||||
extern const char DEVICE_ID_ID[];
|
||||
|
||||
class AddDeviceOperation : public Operation
|
||||
class AddDeviceData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap addDevice(const QVariantMap &map,
|
||||
const QString &id, const QString &displayName, int type,
|
||||
int auth, const QString &hwPlatform, const QString &swPlatform,
|
||||
const QString &debugServer, const QString &freePorts,
|
||||
const QString &host, const QString &keyFile,
|
||||
int origin, const QString &osType, const QString &passwd,
|
||||
int sshPort, int timeout, const QString &uname, int version,
|
||||
const KeyValuePairList &extra);
|
||||
QVariantMap addDevice(const QVariantMap &map) const;
|
||||
|
||||
static QVariantMap initializeDevices();
|
||||
|
||||
static bool exists(const QString &id);
|
||||
static bool exists(const QVariantMap &map, const QString &id);
|
||||
|
||||
private:
|
||||
static KeyValuePairList createDevice(const QString &id, const QString &displayName, int type,
|
||||
int auth, const QString &hwPlatform, const QString &swPlatform,
|
||||
const QString &debugServer, const QString &freePorts,
|
||||
const QString &host, const QString &keyFile,
|
||||
int origin, const QString &osType, const QString &passwd,
|
||||
int sshPort, int timeout, const QString &uname, int version,
|
||||
const KeyValuePairList &extra);
|
||||
|
||||
QString m_id;
|
||||
QString m_displayName;
|
||||
int m_type = -1;
|
||||
int m_authentication = -1;
|
||||
QString m_b2q_platformHardware;
|
||||
QString m_b2q_platformSoftware;
|
||||
QString m_debugServer;
|
||||
QString m_freePortsSpec;
|
||||
QString m_host;
|
||||
QString m_id;
|
||||
QString m_keyFile;
|
||||
QString m_displayName;
|
||||
int m_origin = 1;
|
||||
QString m_osType;
|
||||
QString m_password;
|
||||
int m_sshPort = 0;
|
||||
int m_timeout = 5;
|
||||
int m_type = -1;
|
||||
QString m_uname;
|
||||
int m_version = 0;
|
||||
KeyValuePairList m_extra;
|
||||
};
|
||||
|
||||
class AddDeviceOperation : public Operation, public AddDeviceData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
};
|
||||
|
@@ -76,7 +76,7 @@ int AddKeysOperation::execute() const
|
||||
|
||||
QVariantMap map = load(m_file);
|
||||
|
||||
QVariantMap result = addKeys(map, m_data);
|
||||
QVariantMap result = addKeys(map);
|
||||
if (result.isEmpty() || map == result)
|
||||
return 4;
|
||||
|
||||
@@ -108,7 +108,7 @@ bool AddKeysOperation::test() const
|
||||
data.append(KeyValuePair(QLatin1String("newsub/1/2/3/qbytearray"), QString::fromLatin1("QByteArray:test array.")));
|
||||
data.append(KeyValuePair(QLatin1String("newsub/1/2.1/3/qbytearray"), QString::fromLatin1("QByteArray:test array.")));
|
||||
|
||||
QVariantMap result = addKeys(testMap, data);
|
||||
QVariantMap result = AddKeysData{data}.addKeys(testMap);
|
||||
if (result.count() != 9)
|
||||
return false;
|
||||
|
||||
@@ -194,13 +194,13 @@ bool AddKeysOperation::test() const
|
||||
// preexisting:
|
||||
data.clear();
|
||||
data.append(KeyValuePair(QLatin1String("testint"), QString::fromLatin1("int:4")));
|
||||
result = addKeys(testMap, data);
|
||||
result = AddKeysData{data}.addKeys(testMap);
|
||||
if (!result.isEmpty())
|
||||
return false;
|
||||
|
||||
data.clear();
|
||||
data.append(KeyValuePair(QLatin1String("subkeys/testbool"), QString::fromLatin1("int:24")));
|
||||
result = addKeys(testMap, data);
|
||||
result = AddKeysData{data}.addKeys(testMap);
|
||||
if (!result.isEmpty())
|
||||
return false;
|
||||
|
||||
@@ -208,7 +208,7 @@ bool AddKeysOperation::test() const
|
||||
data.clear();
|
||||
data.append(KeyValuePair(QLatin1String("bool-true"), QString::fromLatin1("bool:trUe")));
|
||||
data.append(KeyValuePair(QLatin1String("bool-true"), QString::fromLatin1("bool:trUe")));
|
||||
result = addKeys(testMap, data);
|
||||
result = AddKeysData{data}.addKeys(testMap);
|
||||
if (!result.isEmpty())
|
||||
return false;
|
||||
|
||||
@@ -216,12 +216,12 @@ bool AddKeysOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap AddKeysOperation::addKeys(const QVariantMap &map, const KeyValuePairList &additions)
|
||||
QVariantMap AddKeysData::addKeys(const QVariantMap &map) const
|
||||
{
|
||||
// Insert data:
|
||||
QVariantMap result = map;
|
||||
|
||||
foreach (const KeyValuePair &p, additions) {
|
||||
foreach (const KeyValuePair &p, m_data) {
|
||||
QList<QVariantMap> stack;
|
||||
|
||||
// Set up a stack of QVariantMaps along the path we take:
|
||||
|
@@ -27,25 +27,29 @@
|
||||
|
||||
#include "operation.h"
|
||||
|
||||
class AddKeysOperation : public Operation
|
||||
class AddKeysData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap addKeys(const QVariantMap &map, const KeyValuePairList &additions);
|
||||
|
||||
private:
|
||||
QString m_file;
|
||||
QVariantMap addKeys(const QVariantMap &map) const;
|
||||
|
||||
QList<KeyValuePair> m_data;
|
||||
};
|
||||
|
||||
class AddKeysOperation : public Operation, public AddKeysData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
|
||||
private:
|
||||
QString m_file;
|
||||
};
|
||||
|
@@ -293,12 +293,7 @@ int AddKitOperation::execute() const
|
||||
if (map.isEmpty())
|
||||
map = initializeKits();
|
||||
|
||||
QVariantMap result = addKit(map, m_id, m_displayName, m_icon, m_debuggerId, m_debuggerEngine,
|
||||
m_debugger, m_deviceType, m_device, m_sysRoot, m_tcs, m_qt,
|
||||
m_mkspec, m_cmakeId, m_cmakeGenerator, m_cmakeExtraGenerator,
|
||||
m_cmakeGeneratorToolset, m_cmakeGeneratorPlatform, m_cmakeConfiguration,
|
||||
m_env, m_extra);
|
||||
|
||||
const QVariantMap result = addKit(map);
|
||||
if (result.isEmpty() || map == result)
|
||||
return 2;
|
||||
|
||||
@@ -308,26 +303,26 @@ int AddKitOperation::execute() const
|
||||
#ifdef WITH_TESTS
|
||||
bool AddKitOperation::test() const
|
||||
{
|
||||
AddKitData kitData;
|
||||
QVariantMap map = initializeKits();
|
||||
|
||||
QVariantMap tcMap = AddToolChainOperation::initializeToolChains();
|
||||
tcMap = AddToolChainOperation::addToolChain(tcMap, "{tc-id}", "langId", "TC", "/usr/bin/gcc",
|
||||
"x86-linux-generic-elf-32bit",
|
||||
"x86-linux-generic-elf-32bit",
|
||||
KeyValuePairList());
|
||||
QVariantMap tcMap = AddToolChainData::initializeToolChains();
|
||||
tcMap = AddToolChainData{"{tc-id}", "langId", "TC", "/usr/bin/gcc",
|
||||
"x86-linux-generic-elf-32bit", "x86-linux-generic-elf-32bit", {}}
|
||||
.addToolChain(tcMap);
|
||||
|
||||
QVariantMap qtMap = AddQtOperation::initializeQtVersions();
|
||||
qtMap = AddQtOperation::addQt(qtMap, "{qt-id}", "Qt", "desktop-qt", "/usr/bin/qmake",
|
||||
KeyValuePairList(), {});
|
||||
QVariantMap qtMap = AddQtData::initializeQtVersions();
|
||||
qtMap = AddQtData{"{qt-id}", "Qt", "desktop-qt", "/usr/bin/qmake", {}, {}}.addQt(qtMap);
|
||||
|
||||
QVariantMap devMap = AddDeviceOperation::initializeDevices();
|
||||
devMap = AddDeviceOperation::addDevice(devMap, "{dev-id}", "Dev", 0, 0,
|
||||
"HWplatform", "SWplatform",
|
||||
"localhost", "10000-11000",
|
||||
"localhost", "", 42,
|
||||
"desktop", "", 22, 10000,
|
||||
"uname", 1,
|
||||
KeyValuePairList());
|
||||
devMap = AddDeviceData{"{dev-id}", "Dev", 0, 0,
|
||||
"HWplatform", "SWplatform",
|
||||
"localhost", "10000-11000",
|
||||
"localhost", "", 42,
|
||||
"desktop", "", 22, 10000,
|
||||
"uname", 1,
|
||||
KeyValuePairList()}
|
||||
.addDevice(devMap);
|
||||
|
||||
const QStringList env = {"TEST=1", "PATH"};
|
||||
|
||||
@@ -341,34 +336,35 @@ bool AddKitOperation::test() const
|
||||
tcs.insert("Cxx", "{tcXX-id}");
|
||||
|
||||
// Fail if TC is not there:
|
||||
QVariantMap empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
|
||||
tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(),
|
||||
QStringList(),
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
|
||||
tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(),
|
||||
QStringList(),
|
||||
{{{"PE.Profile.Data/extraData", QVariant("extraValue")}}}};
|
||||
QVariantMap empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
|
||||
if (!empty.isEmpty())
|
||||
return false;
|
||||
// Do not fail if TC is an ABI:
|
||||
tcs.clear();
|
||||
tcs.insert("C", "x86-linux-generic-elf-64bit");
|
||||
empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
|
||||
tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
|
||||
tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
{KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}};
|
||||
empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
if (empty.isEmpty())
|
||||
return false;
|
||||
// QTCREATORBUG-11983, mach_o was not covered by the first attempt to fix this.
|
||||
tcs.insert("D", "x86-macos-generic-mach_o-64bit");
|
||||
empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
|
||||
tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(),
|
||||
tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
{{KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}}};
|
||||
empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
if (empty.isEmpty())
|
||||
return false;
|
||||
|
||||
@@ -376,31 +372,31 @@ bool AddKitOperation::test() const
|
||||
tcs.insert("Cxx", "{tc-id}");
|
||||
|
||||
// Fail if Qt is not there:
|
||||
empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), tcs, "{qtXX-id}",
|
||||
"unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{dev-id}", QString(), tcs, "{qtXX-id}",
|
||||
"unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
{{KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}}};
|
||||
empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
if (!empty.isEmpty())
|
||||
return false;
|
||||
// Fail if dev is not there:
|
||||
empty = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{devXX-id}", QString(), tcs, "{qt-id}",
|
||||
"unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", "{devXX-id}", QString(), tcs, "{qt-id}",
|
||||
"unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
{KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}};
|
||||
empty = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
if (!empty.isEmpty())
|
||||
return false;
|
||||
|
||||
// Profile 0:
|
||||
map = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs, "{qt-id}",
|
||||
"unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"testId", "Test Kit", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs, "{qt-id}",
|
||||
"unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
{{KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}}};
|
||||
map = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
|
||||
if (map.count() != 4
|
||||
|| !map.contains(VERSION) || map.value(VERSION).toInt() != 1
|
||||
@@ -434,22 +430,23 @@ bool AddKitOperation::test() const
|
||||
return false;
|
||||
|
||||
// Ignore existing ids:
|
||||
QVariantMap result = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"testId", "Test Qt Version X",
|
||||
"/tmp/icon3.png", QString(), 1, "/usr/bin/gdb-test3", "Desktop",
|
||||
QString(), QString(), tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"testId", "Test Qt Version X",
|
||||
"/tmp/icon3.png", QString(), 1, "/usr/bin/gdb-test3", "Desktop",
|
||||
QString(), QString(), tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
{{KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}}};
|
||||
QVariantMap result = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
if (!result.isEmpty())
|
||||
return false;
|
||||
|
||||
// Profile 1: Make sure name is unique:
|
||||
map = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"testId2", "Test Kit2", "/tmp/icon2.png", QString(), 1,
|
||||
"/usr/bin/gdb-test2", "Desktop", "{dev-id}", "/sys/root//", tcs,
|
||||
"{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"testId2", "Test Kit2", "/tmp/icon2.png", QString(), 1,
|
||||
"/usr/bin/gdb-test2", "Desktop", "{dev-id}", "/sys/root//", tcs,
|
||||
"{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
{{KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}}};
|
||||
map = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
|
||||
if (map.count() != 5
|
||||
|| !map.contains(VERSION) || map.value(VERSION).toInt() != 1
|
||||
|| !map.contains(COUNT) || map.value(COUNT).toInt() != 2
|
||||
@@ -489,12 +486,12 @@ bool AddKitOperation::test() const
|
||||
return false;
|
||||
|
||||
// Profile 2: Test debugger id:
|
||||
map = addKit(map, tcMap, qtMap, devMap, QVariantMap(),
|
||||
"test with debugger Id", "Test debugger Id",
|
||||
"/tmp/icon2.png", "debugger Id", 0, QString(), "Desktop", QString(), QString(),
|
||||
tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
KeyValuePairList({KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}));
|
||||
kitData = {"test with debugger Id", "Test debugger Id",
|
||||
"/tmp/icon2.png", "debugger Id", 0, QString(), "Desktop", QString(), QString(),
|
||||
tcs, "{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), env,
|
||||
{KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue"))}};
|
||||
map = kitData.addKit(map, tcMap, qtMap, devMap, {});
|
||||
if (map.count() != 6
|
||||
|| !map.contains(VERSION) || map.value(VERSION).toInt() != 1
|
||||
|| !map.contains(COUNT) || map.value(COUNT).toInt() != 3
|
||||
@@ -528,61 +525,35 @@ bool AddKitOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap AddKitOperation::addKit(const QVariantMap &map,
|
||||
const QString &id, const QString &displayName,
|
||||
const QString &icon, const QString &debuggerId,
|
||||
const quint32 &debuggerType, const QString &debugger,
|
||||
const QString &deviceType, const QString &device,
|
||||
const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &qt,
|
||||
const QString &mkspec, const QString &cmakeId,
|
||||
const QString &cmakeGenerator, const QString &cmakeExtraGenerator,
|
||||
const QString &cmakeGeneratorToolset,
|
||||
const QString &cmakeGeneratorPlatform,
|
||||
const QStringList &cmakeConfiguration, const QStringList &env,
|
||||
const KeyValuePairList &extra)
|
||||
QVariantMap AddKitData::addKit(const QVariantMap &map) const
|
||||
{
|
||||
QVariantMap tcMap = load("ToolChains");
|
||||
QVariantMap qtMap = load("QtVersions");
|
||||
QVariantMap devMap = load("Devices");
|
||||
QVariantMap cmakeMap = load("cmaketools");
|
||||
QVariantMap tcMap = Operation::load("ToolChains");
|
||||
QVariantMap qtMap = Operation::load("QtVersions");
|
||||
QVariantMap devMap = Operation::load("Devices");
|
||||
QVariantMap cmakeMap = Operation::load("cmaketools");
|
||||
|
||||
return addKit(map, tcMap, qtMap, devMap, cmakeMap, id, displayName, icon, debuggerId, debuggerType,
|
||||
debugger, deviceType, device, sysRoot, tcs, qt, mkspec,
|
||||
cmakeId, cmakeGenerator, cmakeExtraGenerator, cmakeGeneratorToolset,
|
||||
cmakeGeneratorPlatform, cmakeConfiguration,
|
||||
env, extra);
|
||||
return AddKitData::addKit(map, tcMap, qtMap, devMap, cmakeMap);
|
||||
}
|
||||
|
||||
QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &tcMap,
|
||||
QVariantMap AddKitData::addKit(const QVariantMap &map, const QVariantMap &tcMap,
|
||||
const QVariantMap &qtMap, const QVariantMap &devMap,
|
||||
const QVariantMap &cmakeMap,
|
||||
const QString &id, const QString &displayName,
|
||||
const QString &icon, const QString &debuggerId,
|
||||
const quint32 &debuggerType, const QString &debugger,
|
||||
const QString &deviceType, const QString &device,
|
||||
const QString &sysRoot, const QHash<QString, QString> &tcs, const QString &qt,
|
||||
const QString &mkspec, const QString &cmakeId,
|
||||
const QString &cmakeGenerator, const QString &cmakeExtraGenerator,
|
||||
const QString &cmakeGeneratorToolset,
|
||||
const QString &cmakeGeneratorPlatform,
|
||||
const QStringList &cmakeConfiguration, const QStringList &env,
|
||||
const KeyValuePairList &extra)
|
||||
const QVariantMap &cmakeMap) const
|
||||
{
|
||||
// Sanity check: Make sure autodetection source is not in use already:
|
||||
QStringList valueKeys = FindValueOperation::findValue(map, QVariant(id));
|
||||
const QStringList valueKeys = FindValueOperation::findValue(map, QVariant(m_id));
|
||||
bool hasId = false;
|
||||
foreach (const QString &k, valueKeys) {
|
||||
for (const QString &k : valueKeys) {
|
||||
if (k.endsWith(QString('/') + ID)) {
|
||||
hasId = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasId) {
|
||||
std::cerr << "Error: Id " << qPrintable(id) << " already defined as kit." << std::endl;
|
||||
std::cerr << "Error: Id " << qPrintable(m_id) << " already defined as kit." << std::endl;
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
for (auto i = tcs.constBegin(); i != tcs.constEnd(); ++i) {
|
||||
for (auto i = m_tcs.constBegin(); i != m_tcs.constEnd(); ++i) {
|
||||
if (!i.value().isEmpty() && !AddToolChainOperation::exists(tcMap, i.value())) {
|
||||
const QRegularExpression abiRegExp("^[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-[a-z0-9_]+-(8|16|32|64|128)bit$");
|
||||
if (!abiRegExp.match(i.value()).hasMatch()) {
|
||||
@@ -593,15 +564,15 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
|
||||
}
|
||||
}
|
||||
|
||||
QString qtId = qt;
|
||||
QString qtId = m_qt;
|
||||
if (!qtId.isEmpty() && !qtId.startsWith("SDK."))
|
||||
qtId = QString::fromLatin1("SDK.") + qt;
|
||||
if (!qtId.isEmpty() && !AddQtOperation::exists(qtMap, qtId)) {
|
||||
qtId = QString::fromLatin1("SDK.") + m_qt;
|
||||
if (!qtId.isEmpty() && !AddQtData::exists(qtMap, qtId)) {
|
||||
std::cerr << "Error: Qt " << qPrintable(qtId) << " does not exist." << std::endl;
|
||||
return QVariantMap();
|
||||
}
|
||||
if (!device.isEmpty() && !AddDeviceOperation::exists(devMap, device)) {
|
||||
std::cerr << "Error: Device " << qPrintable(device) << " does not exist." << std::endl;
|
||||
if (!m_device.isEmpty() && !AddDeviceOperation::exists(devMap, m_device)) {
|
||||
std::cerr << "Error: Device " << qPrintable(m_device) << " does not exist." << std::endl;
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
@@ -609,8 +580,8 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
|
||||
if (!qtId.isNull() && qtId.isEmpty())
|
||||
qtId = "-1";
|
||||
|
||||
if (!cmakeId.isEmpty() && !AddCMakeOperation::exists(cmakeMap, cmakeId)) {
|
||||
std::cerr << "Error: CMake tool " << qPrintable(cmakeId) << " does not exist." << std::endl;
|
||||
if (!m_cmakeId.isEmpty() && !AddCMakeData::exists(cmakeMap, m_cmakeId)) {
|
||||
std::cerr << "Error: CMake tool " << qPrintable(m_cmakeId) << " does not exist." << std::endl;
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
@@ -625,68 +596,69 @@ QVariantMap AddKitOperation::addKit(const QVariantMap &map, const QVariantMap &t
|
||||
|
||||
QString defaultKit = GetOperation::get(map, DEFAULT).toString();
|
||||
if (defaultKit.isEmpty())
|
||||
defaultKit = id;
|
||||
defaultKit = m_id;
|
||||
|
||||
// remove data:
|
||||
QVariantMap cleaned = RmKeysOperation::rmKeys(map, {COUNT, DEFAULT});
|
||||
|
||||
// insert data:
|
||||
KeyValuePairList data = {KeyValuePair({kit, ID}, QVariant(id)),
|
||||
KeyValuePair({kit, DISPLAYNAME}, QVariant(displayName)),
|
||||
KeyValuePair({kit, ICON}, QVariant(icon)),
|
||||
KeyValuePairList data = {KeyValuePair({kit, ID}, QVariant(m_id)),
|
||||
KeyValuePair({kit, DISPLAYNAME}, QVariant(m_displayName)),
|
||||
KeyValuePair({kit, ICON}, QVariant(m_icon)),
|
||||
KeyValuePair({kit, AUTODETECTED}, QVariant(true)),
|
||||
KeyValuePair({kit, SDK}, QVariant(true))};
|
||||
|
||||
if (!debuggerId.isEmpty() || !debugger.isEmpty()) {
|
||||
if (debuggerId.isEmpty()) {
|
||||
data << KeyValuePair({kit, DATA, DEBUGGER, DEBUGGER_ENGINE}, QVariant(debuggerType));
|
||||
data << KeyValuePair({kit, DATA, DEBUGGER, DEBUGGER_BINARY}, QVariant(debugger));
|
||||
if (!m_debuggerId.isEmpty() || !m_debugger.isEmpty()) {
|
||||
if (m_debuggerId.isEmpty()) {
|
||||
data << KeyValuePair({kit, DATA, DEBUGGER, DEBUGGER_ENGINE}, QVariant(m_debuggerEngine));
|
||||
data << KeyValuePair({kit, DATA, DEBUGGER, DEBUGGER_BINARY}, QVariant(m_debugger));
|
||||
} else {
|
||||
data << KeyValuePair({kit, DATA, DEBUGGER }, QVariant(debuggerId));
|
||||
data << KeyValuePair({kit, DATA, DEBUGGER }, QVariant(m_debuggerId));
|
||||
}
|
||||
}
|
||||
if (!deviceType.isNull())
|
||||
data << KeyValuePair({kit, DATA, DEVICE_TYPE}, QVariant(deviceType));
|
||||
if (!device.isNull())
|
||||
data << KeyValuePair({kit, DATA, DEVICE_ID}, QVariant(device));
|
||||
if (!sysRoot.isNull())
|
||||
data << KeyValuePair({kit, DATA, SYSROOT}, Utils::FilePath::fromUserInput(sysRoot).toVariant());
|
||||
for (auto i = tcs.constBegin(); i != tcs.constEnd(); ++i)
|
||||
|
||||
if (!m_deviceType.isNull())
|
||||
data << KeyValuePair({kit, DATA, DEVICE_TYPE}, QVariant(m_deviceType));
|
||||
if (!m_device.isNull())
|
||||
data << KeyValuePair({kit, DATA, DEVICE_ID}, QVariant(m_device));
|
||||
if (!m_sysRoot.isNull())
|
||||
data << KeyValuePair({kit, DATA, SYSROOT}, Utils::FilePath::fromUserInput(m_sysRoot).toVariant());
|
||||
for (auto i = m_tcs.constBegin(); i != m_tcs.constEnd(); ++i)
|
||||
data << KeyValuePair({kit, DATA, TOOLCHAIN, i.key()}, QVariant(i.value()));
|
||||
if (!qtId.isNull())
|
||||
data << KeyValuePair({kit, DATA, QT}, QVariant(qtId));
|
||||
if (!mkspec.isNull())
|
||||
data << KeyValuePair({kit, DATA, MKSPEC}, QVariant(mkspec));
|
||||
if (!cmakeId.isNull())
|
||||
data << KeyValuePair({kit, DATA, CMAKE_ID}, QVariant(cmakeId));
|
||||
if (!cmakeGenerator.isNull()) {
|
||||
if (!m_mkspec.isNull())
|
||||
data << KeyValuePair({kit, DATA, MKSPEC}, QVariant(m_mkspec));
|
||||
if (!m_cmakeId.isNull())
|
||||
data << KeyValuePair({kit, DATA, CMAKE_ID}, QVariant(m_cmakeId));
|
||||
if (!m_cmakeGenerator.isNull()) {
|
||||
QVariantMap generatorMap;
|
||||
generatorMap.insert("Generator", cmakeGenerator);
|
||||
if (!cmakeExtraGenerator.isNull())
|
||||
generatorMap.insert("ExtraGenerator", cmakeExtraGenerator);
|
||||
if (!cmakeGeneratorToolset.isNull())
|
||||
generatorMap.insert("Toolset", cmakeGeneratorToolset);
|
||||
if (!cmakeGeneratorPlatform.isNull())
|
||||
generatorMap.insert("Platform", cmakeGeneratorPlatform);
|
||||
generatorMap.insert("Generator", m_cmakeGenerator);
|
||||
if (!m_cmakeExtraGenerator.isNull())
|
||||
generatorMap.insert("ExtraGenerator", m_cmakeExtraGenerator);
|
||||
if (!m_cmakeGeneratorToolset.isNull())
|
||||
generatorMap.insert("Toolset", m_cmakeGeneratorToolset);
|
||||
if (!m_cmakeGeneratorPlatform.isNull())
|
||||
generatorMap.insert("Platform", m_cmakeGeneratorPlatform);
|
||||
data << KeyValuePair({kit, DATA, CMAKE_GENERATOR}, generatorMap);
|
||||
}
|
||||
if (!cmakeConfiguration.isEmpty())
|
||||
data << KeyValuePair({kit, DATA, CMAKE_CONFIGURATION}, QVariant(cmakeConfiguration));
|
||||
if (!env.isEmpty())
|
||||
data << KeyValuePair({kit, DATA, ENV}, QVariant(env));
|
||||
if (!m_cmakeConfiguration.isEmpty())
|
||||
data << KeyValuePair({kit, DATA, CMAKE_CONFIGURATION}, QVariant(m_cmakeConfiguration));
|
||||
if (!m_env.isEmpty())
|
||||
data << KeyValuePair({kit, DATA, ENV}, QVariant(m_env));
|
||||
|
||||
data << KeyValuePair(DEFAULT, QVariant(defaultKit));
|
||||
data << KeyValuePair(COUNT, QVariant(count + 1));
|
||||
|
||||
KeyValuePairList qtExtraList;
|
||||
foreach (const KeyValuePair &pair, extra)
|
||||
foreach (const KeyValuePair &pair, m_extra)
|
||||
qtExtraList << KeyValuePair(QStringList() << kit << pair.key, pair.value);
|
||||
data.append(qtExtraList);
|
||||
|
||||
return AddKeysOperation::addKeys(cleaned, data);
|
||||
return AddKeysData{data}.addKeys(cleaned);
|
||||
}
|
||||
|
||||
QVariantMap AddKitOperation::initializeKits()
|
||||
QVariantMap AddKitData::initializeKits()
|
||||
{
|
||||
QVariantMap map;
|
||||
map.insert(VERSION, 1);
|
||||
|
@@ -28,49 +28,17 @@
|
||||
#include "operation.h"
|
||||
|
||||
#include <QHash>
|
||||
#include <QString>
|
||||
|
||||
class AddKitOperation : public Operation
|
||||
class AddKitData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap addKit(const QVariantMap &map, const QString &id, const QString &displayName,
|
||||
const QString &icon, const QString &debuggerId,
|
||||
const quint32 &debuggerType, const QString &debugger,
|
||||
const QString &deviceType, const QString &device,
|
||||
const QString &sysRoot, const QHash<QString, QString> &tcs,
|
||||
const QString &qt, const QString &mkspec,
|
||||
const QString &cmakeId, const QString &cmakeGenerator,
|
||||
const QString &cmakeExtraGenerator, const QString &cmakeGeneratorToolset,
|
||||
const QString &cmakeGeneratorPlatform,
|
||||
const QStringList &cmakeConfiguration, const QStringList &env,
|
||||
const KeyValuePairList &extra);
|
||||
QVariantMap addKit(const QVariantMap &map) const;
|
||||
QVariantMap addKit(const QVariantMap &map, const QVariantMap &tcMap,
|
||||
const QVariantMap &qtMap, const QVariantMap &devMap,
|
||||
const QVariantMap &cmakeMap) const;
|
||||
|
||||
static QVariantMap initializeKits();
|
||||
|
||||
// internal:
|
||||
static QVariantMap addKit(const QVariantMap &map, const QVariantMap &tcMap,
|
||||
const QVariantMap &qtMap, const QVariantMap &devMap, const QVariantMap &cmakeMap,
|
||||
const QString &id, const QString &displayName,
|
||||
const QString &icon, const QString &debuggerId,
|
||||
const quint32 &debuggerType, const QString &debugger,
|
||||
const QString &deviceType, const QString &device,
|
||||
const QString &sysRoot, const QHash<QString, QString> &tcs,
|
||||
const QString &qt, const QString &mkspec, const QString &cmakeId, const QString &cmakeGenerator, const QString &cmakeExtraGenerator, const QString &cmakeGeneratorToolset, const QString &cmakeGeneratorPlatform, const QStringList &cmakeConfiguration, const QStringList &env,
|
||||
const KeyValuePairList &extra);
|
||||
|
||||
private:
|
||||
QString m_id;
|
||||
QString m_displayName;
|
||||
QString m_icon;
|
||||
@@ -92,3 +60,18 @@ private:
|
||||
QStringList m_env;
|
||||
KeyValuePairList m_extra;
|
||||
};
|
||||
|
||||
class AddKitOperation : public Operation, public AddKitData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
};
|
||||
|
@@ -169,7 +169,7 @@ int AddQtOperation::execute() const
|
||||
if (map.isEmpty())
|
||||
map = initializeQtVersions();
|
||||
|
||||
QVariantMap result = addQt(map, m_id, m_displayName, m_type, m_qmake, m_extra, m_abis);
|
||||
QVariantMap result = addQt(map);
|
||||
|
||||
if (result.isEmpty() || result == map)
|
||||
return 2;
|
||||
@@ -180,6 +180,7 @@ int AddQtOperation::execute() const
|
||||
#ifdef WITH_TESTS
|
||||
bool AddQtOperation::test() const
|
||||
{
|
||||
AddQtData qtData;
|
||||
QVariantMap map = initializeQtVersions();
|
||||
|
||||
if (map.count() != 1
|
||||
@@ -188,16 +189,13 @@ bool AddQtOperation::test() const
|
||||
return false;
|
||||
|
||||
#if defined Q_OS_WIN
|
||||
map = addQt(map, QLatin1String("{some-qt-id}"), QLatin1String("Test Qt Version"), QLatin1String("testType"),
|
||||
QLatin1String("/tmp//../tmp/test\\qmake"),
|
||||
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))),
|
||||
QStringList());
|
||||
qtData = {"{some-qt-id}", "Test Qt Version", "testType", "/tmp//../tmp/test\\qmake", {},
|
||||
{{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}}};
|
||||
#else
|
||||
map = addQt(map, QLatin1String("{some-qt-id}"), QLatin1String("Test Qt Version"), QLatin1String("testType"),
|
||||
QLatin1String("/tmp//../tmp/test/qmake"),
|
||||
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))),
|
||||
QStringList());
|
||||
qtData = {"{some-qt-id}", "Test Qt Version", "testType", "/tmp//../tmp/test/qmake", {},
|
||||
{{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}}};
|
||||
#endif
|
||||
map = qtData.addQt(map);
|
||||
|
||||
if (map.count() != 2
|
||||
|| !map.contains(QLatin1String(VERSION))
|
||||
@@ -226,18 +224,16 @@ bool AddQtOperation::test() const
|
||||
return false;
|
||||
|
||||
// Ignore existing ids:
|
||||
QVariantMap result = addQt(map, QLatin1String("{some-qt-id}"), QLatin1String("Test Qt Version2"), QLatin1String("testType2"),
|
||||
QLatin1String("/tmp/test/qmake2"),
|
||||
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))),
|
||||
QStringList());
|
||||
qtData = {"{some-qt-id}", "Test Qt Version2", "testType2", "/tmp/test/qmake2", {},
|
||||
{{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}}};
|
||||
QVariantMap result = qtData.addQt(map);
|
||||
if (!result.isEmpty())
|
||||
return false;
|
||||
|
||||
// add 2nd Qt version:
|
||||
map = addQt(map, QLatin1String("testId2"), QLatin1String("Test Qt Version"), QLatin1String("testType3"),
|
||||
QLatin1String("/tmp/test/qmake2"),
|
||||
KeyValuePairList() << KeyValuePair(QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))),
|
||||
QStringList());
|
||||
qtData = {"testId2", "Test Qt Version", "testType3", "/tmp/test/qmake2", {},
|
||||
{{QLatin1String("extraData"), QVariant(QLatin1String("extraValue"))}}};
|
||||
map = qtData.addQt(map);
|
||||
if (map.count() != 3
|
||||
|| !map.contains(QLatin1String(VERSION))
|
||||
|| map.value(QLatin1String(VERSION)).toInt() != 1
|
||||
@@ -272,16 +268,13 @@ bool AddQtOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap AddQtOperation::addQt(const QVariantMap &map,
|
||||
const QString &id, const QString &displayName, const QString &type,
|
||||
const QString &qmake, const KeyValuePairList &extra,
|
||||
const QStringList &abis)
|
||||
QVariantMap AddQtData::addQt(const QVariantMap &map) const
|
||||
{
|
||||
QString sdkId = extendId(id);
|
||||
QString sdkId = extendId(m_id);
|
||||
|
||||
// Sanity check: Make sure autodetection source is not in use already:
|
||||
if (exists(map, sdkId)) {
|
||||
std::cerr << "Error: Id " << qPrintable(id) << " already defined as Qt versions." << std::endl;
|
||||
std::cerr << "Error: Id " << qPrintable(m_id) << " already defined as Qt versions." << std::endl;
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
@@ -299,40 +292,41 @@ QVariantMap AddQtOperation::addQt(const QVariantMap &map,
|
||||
const QString qt = QString::fromLatin1(PREFIX) + QString::number(versionCount);
|
||||
|
||||
// Sanitize qmake path:
|
||||
FilePath saneQmake = FilePath::fromUserInput(qmake).cleanPath();
|
||||
FilePath saneQmake = FilePath::fromUserInput(m_qmake).cleanPath();
|
||||
|
||||
// insert data:
|
||||
KeyValuePairList data;
|
||||
data << KeyValuePair(QStringList() << qt << QLatin1String(ID), QVariant(-1));
|
||||
data << KeyValuePair(QStringList() << qt << QLatin1String(DISPLAYNAME), QVariant(displayName));
|
||||
data << KeyValuePair(QStringList() << qt << QLatin1String(DISPLAYNAME), QVariant(m_displayName));
|
||||
data << KeyValuePair(QStringList() << qt << QLatin1String(AUTODETECTED), QVariant(true));
|
||||
data << KeyValuePair(QStringList() << qt << QLatin1String(AUTODETECTION_SOURCE), QVariant(sdkId));
|
||||
|
||||
data << KeyValuePair(QStringList() << qt << QLatin1String(QMAKE), saneQmake.toVariant());
|
||||
data << KeyValuePair(QStringList() << qt << QLatin1String(TYPE), QVariant(type));
|
||||
data << KeyValuePair(QStringList() << qt << ABIS, QVariant(abis));
|
||||
data << KeyValuePair(QStringList() << qt << QLatin1String(TYPE), QVariant(m_type));
|
||||
data << KeyValuePair(QStringList() << qt << ABIS, QVariant(m_abis));
|
||||
|
||||
KeyValuePairList qtExtraList;
|
||||
foreach (const KeyValuePair &pair, extra)
|
||||
foreach (const KeyValuePair &pair, m_extra)
|
||||
qtExtraList << KeyValuePair(QStringList() << qt << pair.key, pair.value);
|
||||
data.append(qtExtraList);
|
||||
|
||||
return AddKeysOperation::addKeys(map, data);
|
||||
return AddKeysData{data}.addKeys(map);
|
||||
}
|
||||
|
||||
QVariantMap AddQtOperation::initializeQtVersions()
|
||||
QVariantMap AddQtData::initializeQtVersions()
|
||||
{
|
||||
QVariantMap map;
|
||||
map.insert(QLatin1String(VERSION), 1);
|
||||
return map;
|
||||
}
|
||||
|
||||
bool AddQtOperation::exists(const QString &id)
|
||||
bool AddQtData::exists(const QString &id)
|
||||
{
|
||||
QVariantMap map = load(QLatin1String("QtVersions"));
|
||||
QVariantMap map = Operation::load(QLatin1String("QtVersions"));
|
||||
return exists(map, id);
|
||||
}
|
||||
|
||||
bool AddQtOperation::exists(const QVariantMap &map, const QString &id)
|
||||
bool AddQtData::exists(const QVariantMap &map, const QString &id)
|
||||
{
|
||||
QString sdkId = extendId(id);
|
||||
|
||||
|
@@ -27,34 +27,16 @@
|
||||
|
||||
#include "operation.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
class AddQtOperation : public Operation
|
||||
class AddQtData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap addQt(const QVariantMap &map,
|
||||
const QString &id, const QString &displayName, const QString &type,
|
||||
const QString &qmake, const KeyValuePairList &extra,
|
||||
const QStringList &abis);
|
||||
QVariantMap addQt(const QVariantMap &map) const;
|
||||
|
||||
static QVariantMap initializeQtVersions();
|
||||
|
||||
static bool exists(const QString &id);
|
||||
static bool exists(const QVariantMap &map, const QString &id);
|
||||
|
||||
private:
|
||||
QString m_id; // actually this is the autodetectionSource
|
||||
QString m_displayName;
|
||||
QString m_type;
|
||||
@@ -62,3 +44,17 @@ private:
|
||||
QStringList m_abis;
|
||||
KeyValuePairList m_extra;
|
||||
};
|
||||
|
||||
class AddQtOperation : public Operation, public AddQtData
|
||||
{
|
||||
private:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
bool setArguments(const QStringList &args) final;
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
};
|
||||
|
@@ -158,8 +158,7 @@ int AddToolChainOperation::execute() const
|
||||
if (map.isEmpty())
|
||||
map = initializeToolChains();
|
||||
|
||||
QVariantMap result = addToolChain(map, m_id, m_languageId, m_displayName, m_path,
|
||||
m_targetAbi, m_supportedAbis, m_extra);
|
||||
QVariantMap result = addToolChain(map);
|
||||
if (result.isEmpty() || map == result)
|
||||
return 2;
|
||||
|
||||
@@ -172,8 +171,8 @@ bool AddToolChainOperation::test() const
|
||||
QVariantMap map = initializeToolChains();
|
||||
|
||||
// Add toolchain:
|
||||
map = addToolChain(map, "testId", "langId", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
|
||||
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue")));
|
||||
map = AddToolChainData{"testId", "langId", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
|
||||
{{"ExtraKey", QVariant("ExtraValue")}}}.addToolChain(map);
|
||||
if (map.value(COUNT).toInt() != 1
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '0'))
|
||||
return false;
|
||||
@@ -190,15 +189,15 @@ bool AddToolChainOperation::test() const
|
||||
return false;
|
||||
|
||||
// Ignore same Id:
|
||||
QVariantMap unchanged = addToolChain(map, "testId", "langId", "name2", "/tmp/test2", "test-abi2",
|
||||
QVariantMap unchanged = AddToolChainData{"testId", "langId", "name2", "/tmp/test2", "test-abi2",
|
||||
"test-abi2,test-abi3",
|
||||
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue2")));
|
||||
{{"ExtraKey", QVariant("ExtraValue2")}}}.addToolChain(map);
|
||||
if (!unchanged.isEmpty())
|
||||
return false;
|
||||
|
||||
// add 2nd tool chain:
|
||||
map = addToolChain(map, "{some-tc-id}", "langId2", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
|
||||
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue")));
|
||||
map = AddToolChainData{"{some-tc-id}", "langId2", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
|
||||
{{"ExtraKey", QVariant("ExtraValue")}}}.addToolChain(map);
|
||||
if (map.value(COUNT).toInt() != 2
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '0')
|
||||
|| !map.contains(QString::fromLatin1(PREFIX) + '1'))
|
||||
@@ -230,15 +229,11 @@ bool AddToolChainOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap AddToolChainOperation::addToolChain(const QVariantMap &map, const QString &id,
|
||||
const QString &lang, const QString &displayName,
|
||||
const QString &path, const QString &abi,
|
||||
const QString &supportedAbis,
|
||||
const KeyValuePairList &extra)
|
||||
QVariantMap AddToolChainData::addToolChain(const QVariantMap &map) const
|
||||
{
|
||||
// Sanity check: Does the Id already exist?
|
||||
if (exists(map, id)) {
|
||||
std::cerr << "Error: Id " << qPrintable(id) << " already defined for tool chains." << std::endl;
|
||||
if (exists(map, m_id)) {
|
||||
std::cerr << "Error: Id " << qPrintable(m_id) << " already defined for tool chains." << std::endl;
|
||||
return QVariantMap();
|
||||
}
|
||||
|
||||
@@ -255,44 +250,44 @@ QVariantMap AddToolChainOperation::addToolChain(const QVariantMap &map, const QS
|
||||
const QString tc = QString::fromLatin1(PREFIX) + QString::number(count);
|
||||
|
||||
KeyValuePairList data;
|
||||
data << KeyValuePair({tc, ID}, QVariant(id));
|
||||
data << KeyValuePair({tc, ID}, QVariant(m_id));
|
||||
|
||||
// Language compatibility hack for old Qt components that use the language spec from 4.2.
|
||||
// Some Qt 5.15 components were actually still using this.
|
||||
QString newLang; // QtC 4.3 and later
|
||||
lang.toInt(&ok);
|
||||
if (lang == "2" || lang == "Cxx") {
|
||||
m_languageId.toInt(&ok);
|
||||
if (m_languageId == "2" || m_languageId == "Cxx") {
|
||||
newLang = "Cxx";
|
||||
} else if (lang == "1" || lang == "C") {
|
||||
} else if (m_languageId == "1" || m_languageId == "C") {
|
||||
newLang = "C";
|
||||
} else if (ok) {
|
||||
std::cerr << "Error: Language ID must be 1 for C, 2 for Cxx "
|
||||
<< "or a string like \"C\", \"Cxx\", \"Nim\" (was \""
|
||||
<< qPrintable(lang) << "\")" << std::endl;
|
||||
<< qPrintable(m_languageId) << "\")" << std::endl;
|
||||
return {};
|
||||
} else if (!ok) {
|
||||
newLang = lang;
|
||||
newLang = m_languageId;
|
||||
}
|
||||
data << KeyValuePair({tc, LANGUAGE_KEY_V2}, QVariant(newLang));
|
||||
data << KeyValuePair({tc, DISPLAYNAME}, QVariant(displayName));
|
||||
data << KeyValuePair({tc, DISPLAYNAME}, QVariant(m_displayName));
|
||||
data << KeyValuePair({tc, AUTODETECTED}, QVariant(true));
|
||||
data << KeyValuePair({tc, PATH}, Utils::FilePath::fromUserInput(path).toVariant());
|
||||
data << KeyValuePair({tc, TARGET_ABI}, QVariant(abi));
|
||||
data << KeyValuePair({tc, PATH}, Utils::FilePath::fromUserInput(m_path).toVariant());
|
||||
data << KeyValuePair({tc, TARGET_ABI}, QVariant(m_targetAbi));
|
||||
QVariantList abis;
|
||||
QStringList abiStrings = supportedAbis.split(',');
|
||||
QStringList abiStrings = m_supportedAbis.split(',');
|
||||
foreach (const QString &s, abiStrings)
|
||||
abis << QVariant(s);
|
||||
data << KeyValuePair({tc, SUPPORTED_ABIS}, QVariant(abis));
|
||||
KeyValuePairList tcExtraList;
|
||||
foreach (const KeyValuePair &pair, extra)
|
||||
foreach (const KeyValuePair &pair, m_extra)
|
||||
tcExtraList << KeyValuePair(QStringList({tc}) << pair.key, pair.value);
|
||||
data.append(tcExtraList);
|
||||
data << KeyValuePair(COUNT, QVariant(count + 1));
|
||||
|
||||
return AddKeysOperation::addKeys(result, data);
|
||||
return AddKeysData{data}.addKeys(result);
|
||||
}
|
||||
|
||||
QVariantMap AddToolChainOperation::initializeToolChains()
|
||||
QVariantMap AddToolChainData::initializeToolChains()
|
||||
{
|
||||
QVariantMap map;
|
||||
map.insert(COUNT, 0);
|
||||
@@ -300,7 +295,7 @@ QVariantMap AddToolChainOperation::initializeToolChains()
|
||||
return map;
|
||||
}
|
||||
|
||||
bool AddToolChainOperation::exists(const QVariantMap &map, const QString &id)
|
||||
bool AddToolChainData::exists(const QVariantMap &map, const QString &id)
|
||||
{
|
||||
QStringList valueKeys = FindValueOperation::findValue(map, id);
|
||||
// support old settings using QByteArray for id's
|
||||
@@ -314,7 +309,7 @@ bool AddToolChainOperation::exists(const QVariantMap &map, const QString &id)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AddToolChainOperation::exists(const QString &id)
|
||||
bool AddToolChainData::exists(const QString &id)
|
||||
{
|
||||
QVariantMap map = Operation::load("ToolChains");
|
||||
return exists(map, id);
|
||||
|
@@ -27,34 +27,16 @@
|
||||
|
||||
#include "operation.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
class AddToolChainOperation : public Operation
|
||||
class AddToolChainData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap addToolChain(const QVariantMap &map,
|
||||
const QString &id, const QString &lang,
|
||||
const QString &displayName, const QString &path,
|
||||
const QString &abi, const QString &supportedAbis,
|
||||
const KeyValuePairList &extra);
|
||||
QVariantMap addToolChain(const QVariantMap &map) const;
|
||||
|
||||
static QVariantMap initializeToolChains();
|
||||
|
||||
static bool exists(const QString &id);
|
||||
static bool exists(const QVariantMap &map, const QString &id);
|
||||
|
||||
private:
|
||||
QString m_id;
|
||||
QString m_languageId;
|
||||
QString m_displayName;
|
||||
@@ -63,3 +45,19 @@ private:
|
||||
QString m_supportedAbis;
|
||||
KeyValuePairList m_extra;
|
||||
};
|
||||
|
||||
class AddToolChainOperation : public Operation, public AddToolChainData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
};
|
||||
|
@@ -79,7 +79,7 @@ bool AddValueOperation::setArguments(const QStringList &args)
|
||||
m_file = tempArgs.takeFirst();
|
||||
m_key = tempArgs.takeFirst();
|
||||
for (const auto &arg : tempArgs) {
|
||||
const auto val = Operation::valueFromString(arg);
|
||||
const auto val = valueFromString(arg);
|
||||
if (!val.isValid() || val.isNull()) {
|
||||
std::cerr << "Error: " << std::quoted(arg.toStdString())
|
||||
<< " is not a valid QVariant like string Type:Value.\n"
|
||||
@@ -101,7 +101,7 @@ int AddValueOperation::execute() const
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
auto status = appendListToMap(map, m_key, m_values);
|
||||
bool status = appendListToMap(map);
|
||||
|
||||
if (status) {
|
||||
status = save(map, m_file);
|
||||
@@ -122,13 +122,12 @@ bool AddValueOperation::test() const
|
||||
testKvpList.append(KeyValuePair(QLatin1String("test/foobar"), QString::fromLatin1("int:42")));
|
||||
testKvpList.append(KeyValuePair(QLatin1String("test/bar"), testDataList));
|
||||
|
||||
const auto valueList = QVariantList(
|
||||
{Operation::valueFromString("QString:ELIL"), Operation::valueFromString("int:-1")});
|
||||
const QVariantList valueList = {valueFromString("QString:ELIL"), valueFromString("int:-1")};
|
||||
|
||||
QVariantMap testMap;
|
||||
|
||||
// add to empty map
|
||||
auto result = appendListToMap(testMap, "some key", valueList);
|
||||
bool result = AddValueData{"some key", valueList}.appendListToMap(testMap);
|
||||
|
||||
if (result)
|
||||
return false;
|
||||
@@ -137,19 +136,19 @@ bool AddValueOperation::test() const
|
||||
testMap.insert(QLatin1String("aKey"), "withAString");
|
||||
|
||||
// append to a value
|
||||
result = appendListToMap(testMap, "aKey", valueList);
|
||||
result = AddValueData{"aKey", valueList}.appendListToMap(testMap);
|
||||
|
||||
if (result)
|
||||
return false;
|
||||
|
||||
testMap = AddKeysOperation::addKeys(testMap, testKvpList);
|
||||
testMap = AddKeysData{testKvpList}.addKeys(testMap);
|
||||
|
||||
// quick sanity check
|
||||
if (testMap.count() != 3 && testDataList.count() != 2 && testKvpList.count() != 3)
|
||||
return false;
|
||||
|
||||
// successful adding of values
|
||||
result = appendListToMap(testMap, "test/bar", valueList);
|
||||
result = AddValueData{"test/bar", valueList}.appendListToMap(testMap);
|
||||
if (!result)
|
||||
return false;
|
||||
|
||||
@@ -165,30 +164,28 @@ bool AddValueOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
bool AddValueOperation::appendListToMap(QVariantMap &map,
|
||||
const QString &key,
|
||||
const QVariantList &values)
|
||||
bool AddValueData::appendListToMap(QVariantMap &map) const
|
||||
{
|
||||
const auto data = GetOperation::get(map, key);
|
||||
const QVariant data = GetOperation::get(map, m_key);
|
||||
|
||||
if (!data.isValid() || data.isNull()) {
|
||||
std::cerr << "Error: Could not retrieve value for key " << std::quoted(key.toStdString())
|
||||
std::cerr << "Error: Could not retrieve value for key " << std::quoted(m_key.toStdString())
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (data.type() != QVariant::List) {
|
||||
std::cerr << "Error: Data stored in " << std::quoted(key.toStdString())
|
||||
std::cerr << "Error: Data stored in " << std::quoted(m_key.toStdString())
|
||||
<< " is not a QVariantList." << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
auto newList = qvariant_cast<QVariantList>(data);
|
||||
|
||||
newList.append(values);
|
||||
newList.append(m_values);
|
||||
|
||||
map = RmKeysOperation::rmKeys(map, {key});
|
||||
map = AddKeysOperation::addKeys(map, {Operation::KeyValuePair(key, newList)});
|
||||
map = RmKeysOperation::rmKeys(map, {m_key});
|
||||
map = AddKeysData{{{m_key, newList}}}.addKeys(map);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@@ -28,25 +28,30 @@
|
||||
|
||||
#include "operation.h"
|
||||
|
||||
class AddValueOperation : public Operation
|
||||
class AddValueData
|
||||
{
|
||||
public:
|
||||
QString name() const override;
|
||||
QString helpText() const override;
|
||||
QString argumentsHelpText() const override;
|
||||
bool appendListToMap(QVariantMap &map) const;
|
||||
|
||||
bool setArguments(const QStringList &args) override;
|
||||
|
||||
int execute() const override;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const override;
|
||||
#endif
|
||||
|
||||
static bool appendListToMap(QVariantMap &map, const QString &key, const QVariantList &values);
|
||||
|
||||
private:
|
||||
QString m_file;
|
||||
QString m_key;
|
||||
QVariantList m_values;
|
||||
};
|
||||
|
||||
class AddValueOperation : public Operation, public AddValueData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
|
||||
private:
|
||||
QString m_file;
|
||||
};
|
||||
|
@@ -30,18 +30,17 @@
|
||||
class FindKeyOperation : public Operation
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const;
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
bool test() const final;
|
||||
#endif
|
||||
|
||||
static QStringList findKey(const QVariant &in, const QString &key,
|
||||
const QString &prefix = QString());
|
||||
|
||||
|
@@ -53,7 +53,7 @@ bool FindValueOperation::setArguments(const QStringList &args)
|
||||
continue;
|
||||
}
|
||||
|
||||
QVariant v = Operation::valueFromString(current);
|
||||
QVariant v = valueFromString(current);
|
||||
if (!v.isValid()) {
|
||||
std::cerr << "Value for key '" << qPrintable(current) << "' is not valid." << std::endl << std::endl;
|
||||
return false;
|
||||
|
@@ -30,16 +30,16 @@
|
||||
class FindValueOperation : public Operation
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const;
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
bool test() const final;
|
||||
#endif
|
||||
|
||||
static QStringList findValue(const QVariant &in, const QVariant &value,
|
||||
|
@@ -30,16 +30,16 @@
|
||||
class GetOperation : public Operation
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const;
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
bool test() const final;
|
||||
#endif
|
||||
|
||||
static QVariant get(const QVariantMap &map, const QString &key);
|
||||
|
@@ -34,7 +34,7 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
QVariant Operation::valueFromString(const QString &v)
|
||||
QVariant valueFromString(const QString &v)
|
||||
{
|
||||
int pos = v.indexOf(QLatin1Char(':'));
|
||||
if (pos <= 0)
|
||||
@@ -62,23 +62,23 @@ QVariant Operation::valueFromString(const QString &v)
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
Operation::KeyValuePair::KeyValuePair(const QString &k, const QString &v) :
|
||||
KeyValuePair::KeyValuePair(const QString &k, const QString &v) :
|
||||
value(valueFromString(v))
|
||||
{
|
||||
key = k.split(QLatin1Char('/'));
|
||||
}
|
||||
|
||||
Operation::KeyValuePair::KeyValuePair(const QString &k, const QVariant &v) :
|
||||
KeyValuePair::KeyValuePair(const QString &k, const QVariant &v) :
|
||||
value(v)
|
||||
{
|
||||
key = k.split(QLatin1Char('/'));
|
||||
}
|
||||
|
||||
Operation::KeyValuePair::KeyValuePair(const QStringList &k, const QString &v) :
|
||||
KeyValuePair::KeyValuePair(const QStringList &k, const QString &v) :
|
||||
key(k), value(valueFromString(v))
|
||||
{ }
|
||||
|
||||
Operation::KeyValuePair::KeyValuePair(const QStringList &k, const QVariant &v) :
|
||||
KeyValuePair::KeyValuePair(const QStringList &k, const QVariant &v) :
|
||||
key(k), value(v)
|
||||
{ }
|
||||
|
||||
|
@@ -30,21 +30,25 @@
|
||||
#include <QStringList>
|
||||
#include <QVariant>
|
||||
|
||||
class KeyValuePair
|
||||
{
|
||||
public:
|
||||
KeyValuePair(const QString &k, const QString &v);
|
||||
KeyValuePair(const QString &k, const QVariant &v);
|
||||
KeyValuePair(const QStringList &k, const QString &v);
|
||||
KeyValuePair(const QStringList &k, const QVariant &v);
|
||||
|
||||
QStringList key;
|
||||
QVariant value;
|
||||
};
|
||||
|
||||
using KeyValuePairList = QList<KeyValuePair>;
|
||||
|
||||
QVariant valueFromString(const QString &v);
|
||||
|
||||
class Operation
|
||||
{
|
||||
public:
|
||||
class KeyValuePair {
|
||||
public:
|
||||
KeyValuePair(const QString &k, const QString &v);
|
||||
KeyValuePair(const QString &k, const QVariant &v);
|
||||
KeyValuePair(const QStringList &k, const QString &v);
|
||||
KeyValuePair(const QStringList &k, const QVariant &v);
|
||||
|
||||
QStringList key;
|
||||
QVariant value;
|
||||
};
|
||||
typedef QList<KeyValuePair> KeyValuePairList;
|
||||
|
||||
virtual ~Operation() { }
|
||||
|
||||
virtual QString name() const = 0;
|
||||
@@ -61,6 +65,4 @@ public:
|
||||
|
||||
static QVariantMap load(const QString &file);
|
||||
bool save(const QVariantMap &map, const QString &file) const;
|
||||
|
||||
static QVariant valueFromString(const QString &v);
|
||||
};
|
||||
|
@@ -85,7 +85,7 @@ int RmCMakeOperation::execute() const
|
||||
if (map.isEmpty())
|
||||
return 0;
|
||||
|
||||
QVariantMap result = rmCMake(map, m_id);
|
||||
QVariantMap result = RmCMakeData{m_id}.rmCMake(map);
|
||||
if (result == map)
|
||||
return 2;
|
||||
|
||||
@@ -98,20 +98,20 @@ bool RmCMakeOperation::test() const
|
||||
// Add cmakes:
|
||||
QVariantMap map = AddCMakeOperation::initializeCMake();
|
||||
const QVariantMap emptyMap = map;
|
||||
map = AddCMakeOperation::addCMake(map, "testId", "name", "/tmp/test",
|
||||
KeyValuePairList({KeyValuePair("ExtraKey", QVariant("ExtraValue"))}));
|
||||
map = AddCMakeOperation::addCMake(map, "testId2", "other name", "/tmp/test2", KeyValuePairList());
|
||||
map = AddCMakeData{"testId", "name", "/tmp/test",
|
||||
{{"ExtraKey", QVariant("ExtraValue")}}}.addCMake(map);
|
||||
map = AddCMakeData{"testId2", "other name", "/tmp/test2", {}}.addCMake(map);
|
||||
|
||||
QVariantMap result = rmCMake(QVariantMap(), "nonexistent");
|
||||
QVariantMap result = RmCMakeData{"nonexistent"}.rmCMake(QVariantMap());
|
||||
if (!result.isEmpty())
|
||||
return false;
|
||||
|
||||
result = rmCMake(map, "nonexistent");
|
||||
result = RmCMakeData{"nonexistent"}.rmCMake(map);
|
||||
if (result != map)
|
||||
return false;
|
||||
|
||||
// Remove from map with both testId and testId2:
|
||||
result = rmCMake(map, "testId2");
|
||||
result = RmCMakeData{"testId2"}.rmCMake(map);
|
||||
if (result == map
|
||||
|| result.value(COUNT, 0).toInt() != 1
|
||||
|| !result.contains(QString::fromLatin1(PREFIX) + "0")
|
||||
@@ -119,7 +119,7 @@ bool RmCMakeOperation::test() const
|
||||
return false;
|
||||
|
||||
// Remove from map with both testId and testId2:
|
||||
result = rmCMake(map, "testId");
|
||||
result = RmCMakeData{"testId"}.rmCMake(map);
|
||||
if (result == map
|
||||
|| result.value(COUNT, 0).toInt() != 1
|
||||
|| !result.contains(QString::fromLatin1(PREFIX) + "0")
|
||||
@@ -127,7 +127,7 @@ bool RmCMakeOperation::test() const
|
||||
return false;
|
||||
|
||||
// Remove from map without testId!
|
||||
result = rmCMake(result, "testId2");
|
||||
result = RmCMakeData{"testId2"}.rmCMake(result);
|
||||
if (result != emptyMap)
|
||||
return false;
|
||||
|
||||
@@ -135,7 +135,7 @@ bool RmCMakeOperation::test() const
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariantMap RmCMakeOperation::rmCMake(const QVariantMap &map, const QString &id)
|
||||
QVariantMap RmCMakeData::rmCMake(const QVariantMap &map) const
|
||||
{
|
||||
// Find count of cmakes:
|
||||
bool ok;
|
||||
@@ -148,7 +148,7 @@ QVariantMap RmCMakeOperation::rmCMake(const QVariantMap &map, const QString &id)
|
||||
QVariantList cmList;
|
||||
for (int i = 0; i < count; ++i) {
|
||||
QVariantMap cmData = GetOperation::get(map, QString::fromLatin1(PREFIX) + QString::number(i)).toMap();
|
||||
if (cmData.value(ID).toString() != id)
|
||||
if (cmData.value(ID).toString() != m_id)
|
||||
cmList.append(cmData);
|
||||
}
|
||||
|
||||
|
@@ -27,25 +27,26 @@
|
||||
|
||||
#include "operation.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
class RmCMakeOperation : public Operation
|
||||
class RmCMakeData
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
QVariantMap rmCMake(const QVariantMap &map) const;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
|
||||
int execute() const;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
#endif
|
||||
|
||||
static QVariantMap rmCMake(const QVariantMap &map, const QString &id);
|
||||
|
||||
private:
|
||||
QString m_id;
|
||||
};
|
||||
|
||||
class RmCMakeOperation : public Operation, public RmCMakeData
|
||||
{
|
||||
public:
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const final;
|
||||
#endif
|
||||
};
|
||||
|
@@ -95,16 +95,15 @@ bool RmDebuggerOperation::test() const
|
||||
{
|
||||
|
||||
QVariantMap map =
|
||||
AddDebuggerOperation::addDebugger(AddDebuggerOperation::initializeDebuggers(),
|
||||
QLatin1String("id1"), QLatin1String("Name1"),
|
||||
2, QLatin1String("/tmp/debugger1"),
|
||||
QStringList() << QLatin1String("test11") << QLatin1String("test12"),
|
||||
KeyValuePairList());
|
||||
map =
|
||||
AddDebuggerOperation::addDebugger(map, QLatin1String("id2"), QLatin1String("Name2"),
|
||||
2, QLatin1String("/tmp/debugger2"),
|
||||
QStringList() << QLatin1String("test21") << QLatin1String("test22"),
|
||||
KeyValuePairList());
|
||||
AddDebuggerData{QLatin1String("id1"), QLatin1String("Name1"),
|
||||
2, QLatin1String("/tmp/debugger1"),
|
||||
{"test11", "test12"}, {}}
|
||||
.addDebugger(AddDebuggerOperation::initializeDebuggers());
|
||||
|
||||
map = AddDebuggerData{QLatin1String("id2"), QLatin1String("Name2"),
|
||||
2, QLatin1String("/tmp/debugger2"),
|
||||
{"test21", "test22"}, {}}
|
||||
.addDebugger(map);
|
||||
|
||||
QVariantMap result = rmDebugger(map, QLatin1String("id2"));
|
||||
if (result.count() != 3
|
||||
@@ -178,6 +177,6 @@ QVariantMap RmDebuggerOperation::rmDebugger(const QVariantMap &map, const QStrin
|
||||
debuggerList.at(i));
|
||||
}
|
||||
|
||||
return AddKeysOperation::addKeys(result, data);
|
||||
return AddKeysData{data}.addKeys(result);
|
||||
}
|
||||
|
||||
|
@@ -98,40 +98,40 @@ int RmKitOperation::execute() const
|
||||
bool RmKitOperation::test() const
|
||||
{
|
||||
QVariantMap tcMap = AddToolChainOperation::initializeToolChains();
|
||||
tcMap = AddToolChainOperation::addToolChain(tcMap, "{tc-id}", "langId", "TC", "/usr/bin/gcc",
|
||||
"x86-linux-generic-elf-32bit",
|
||||
"x86-linux-generic-elf-32bit",
|
||||
KeyValuePairList());
|
||||
tcMap = AddToolChainData{"{tc-id}", "langId", "TC", "/usr/bin/gcc",
|
||||
"x86-linux-generic-elf-32bit", "x86-linux-generic-elf-32bit", {}}
|
||||
.addToolChain(tcMap);
|
||||
|
||||
QVariantMap qtMap = AddQtOperation::initializeQtVersions();
|
||||
qtMap = AddQtOperation::addQt(qtMap, "{qt-id}", "Qt", "desktop-qt", "/usr/bin/qmake",
|
||||
KeyValuePairList(), QStringList());
|
||||
QVariantMap qtMap = AddQtData::initializeQtVersions();
|
||||
qtMap = AddQtData{"{qt-id}", "Qt", "desktop-qt", "/usr/bin/qmake", {}, {}}.addQt(qtMap);
|
||||
|
||||
QVariantMap devMap = AddDeviceOperation::initializeDevices();
|
||||
devMap = AddDeviceOperation::addDevice(devMap, "{dev-id}", "Dev", 0, 0,
|
||||
"HWplatform", "SWplatform",
|
||||
"localhost", "10000-11000", "localhost", "", 42,
|
||||
"desktop", "", 22, 10000, "uname", 1,
|
||||
KeyValuePairList());
|
||||
devMap = AddDeviceData{"{dev-id}", "Dev", 0, 0,
|
||||
"HWplatform", "SWplatform",
|
||||
"localhost", "10000-11000", "localhost", "", 42,
|
||||
"desktop", "", 22, 10000, "uname", 1,
|
||||
KeyValuePairList()}
|
||||
.addDevice(devMap);
|
||||
|
||||
QHash<QString, QString> tcs;
|
||||
tcs.insert("Cxx", "{tc-id}");
|
||||
|
||||
QVariantMap map =
|
||||
AddKitOperation::addKit(AddKitOperation::initializeKits(), tcMap, qtMap, devMap,
|
||||
QVariantMap(),
|
||||
"testId", "Test Qt Version", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs,
|
||||
"{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), QStringList(),
|
||||
KeyValuePairList() << KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue")));
|
||||
map =
|
||||
AddKitOperation::addKit(map, tcMap, qtMap, devMap, QVariantMap(), "testId2", "Test Qt Version",
|
||||
"/tmp/icon2.png", QString(), 1, "/usr/bin/gdb-test2",
|
||||
"Desktop", QString(), QString(), tcs, "{qt-id}",
|
||||
"unsupported/mkspec2",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), QStringList(),
|
||||
KeyValuePairList() << KeyValuePair("PE.Profile.Data/extraData", QVariant("extraValue2")));
|
||||
AddKitData{"testId", "Test Qt Version", "/tmp/icon.png", QString(), 1,
|
||||
"/usr/bin/gdb-test", "Desktop", QString(), QString(), tcs,
|
||||
"{qt-id}", "unsupported/mkspec",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), QStringList(),
|
||||
{{"PE.Profile.Data/extraData", QVariant("extraValue")}}}
|
||||
.addKit(AddKitData::initializeKits(), tcMap, qtMap, devMap, {});
|
||||
|
||||
|
||||
map = AddKitData{"testId2", "Test Qt Version",
|
||||
"/tmp/icon2.png", QString(), 1, "/usr/bin/gdb-test2",
|
||||
"Desktop", QString(), QString(), tcs, "{qt-id}",
|
||||
"unsupported/mkspec2",
|
||||
QString(), QString(), QString(), QString(), QString(), QStringList(), QStringList(),
|
||||
{{"PE.Profile.Data/extraData", QVariant("extraValue2")}}}
|
||||
.addKit(map, tcMap, qtMap, devMap, {});
|
||||
|
||||
QVariantMap result = rmKit(map, "testId");
|
||||
if (result.count() != 4
|
||||
@@ -212,5 +212,5 @@ QVariantMap RmKitOperation::rmKit(const QVariantMap &map, const QString &id)
|
||||
data << KeyValuePair(QString::fromLatin1(PREFIX) + QString::number(i),
|
||||
profileList.at(i));
|
||||
|
||||
return AddKeysOperation::addKeys(result, data);
|
||||
return AddKeysData{data}.addKeys(result);
|
||||
}
|
||||
|
@@ -95,19 +95,17 @@ int RmQtOperation::execute() const
|
||||
bool RmQtOperation::test() const
|
||||
{
|
||||
// Add toolchain:
|
||||
QVariantMap map = AddQtOperation::initializeQtVersions();
|
||||
QVariantMap map = AddQtData::initializeQtVersions();
|
||||
|
||||
QVariantMap result = rmQt(QVariantMap(), QLatin1String("nonexistant"));
|
||||
if (result != map)
|
||||
return false;
|
||||
|
||||
map = AddQtOperation::addQt(map, QLatin1String("testId"), QLatin1String("name"), QLatin1String("type"),
|
||||
QLatin1String("/tmp/test"),
|
||||
KeyValuePairList() << KeyValuePair(QLatin1String("ExtraKey"), QVariant(QLatin1String("ExtraValue"))),
|
||||
QStringList());
|
||||
map = AddQtOperation::addQt(map, QLatin1String("testId2"), QLatin1String("other name"), QLatin1String("type"),
|
||||
QLatin1String("/tmp/test2"),
|
||||
KeyValuePairList(), QStringList());
|
||||
map = AddQtData{"testId", "name", "type", "/tmp/test", {},
|
||||
{{QLatin1String("ExtraKey"), QVariant(QLatin1String("ExtraValue"))}}}
|
||||
.addQt(map);
|
||||
|
||||
map = AddQtData{"testId2", "other name", "type", "/tmp/test2", {}, {}}.addQt(map);
|
||||
|
||||
result = rmQt(map, QLatin1String("nonexistant"));
|
||||
if (result != map)
|
||||
@@ -149,7 +147,7 @@ QVariantMap RmQtOperation::rmQt(const QVariantMap &map, const QString &id)
|
||||
qtList.append(qtData);
|
||||
}
|
||||
|
||||
QVariantMap newMap = AddQtOperation::initializeQtVersions();
|
||||
QVariantMap newMap = AddQtData::initializeQtVersions();
|
||||
for (int i = 0; i < qtList.count(); ++i)
|
||||
newMap.insert(QString::fromLatin1(PREFIX) + QString::number(i), qtList.at(i));
|
||||
|
||||
|
@@ -97,11 +97,13 @@ bool RmToolChainOperation::test() const
|
||||
{
|
||||
// Add toolchain:
|
||||
QVariantMap map = AddToolChainOperation::initializeToolChains();
|
||||
map = AddToolChainOperation::addToolChain(map, "testId", "langId", "name", "/tmp/test", "test-abi",
|
||||
"test-abi,test-abi2",
|
||||
KeyValuePairList({KeyValuePair("ExtraKey", QVariant("ExtraValue"))}));
|
||||
map = AddToolChainOperation::addToolChain(map, "testId2", "langId", "other name", "/tmp/test2", "test-abi",
|
||||
"test-abi,test-abi2", KeyValuePairList());
|
||||
map = AddToolChainData{"testId", "langId", "name", "/tmp/test", "test-abi",
|
||||
"test-abi,test-abi2", {{"ExtraKey", QVariant("ExtraValue")}}}
|
||||
.addToolChain(map);
|
||||
|
||||
map = AddToolChainData{"testId2", "langId", "other name", "/tmp/test2", "test-abi",
|
||||
"test-abi,test-abi2", {}}
|
||||
.addToolChain(map);
|
||||
|
||||
QVariantMap result = rmToolChain(QVariantMap(), "nonexistent");
|
||||
if (!result.isEmpty())
|
||||
|
@@ -32,16 +32,16 @@
|
||||
class RmToolChainOperation : public Operation
|
||||
{
|
||||
public:
|
||||
QString name() const;
|
||||
QString helpText() const;
|
||||
QString argumentsHelpText() const;
|
||||
QString name() const final;
|
||||
QString helpText() const final;
|
||||
QString argumentsHelpText() const final;
|
||||
|
||||
bool setArguments(const QStringList &args);
|
||||
bool setArguments(const QStringList &args) final;
|
||||
|
||||
int execute() const;
|
||||
int execute() const final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
bool test() const;
|
||||
bool test() const final;
|
||||
#endif
|
||||
|
||||
static QVariantMap rmToolChain(const QVariantMap &map, const QString &id);
|
||||
|
Reference in New Issue
Block a user