From 44493857c2b1bf154dd1c74cedca6f651b2802a9 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 18 Nov 2021 16:56:35 +0100 Subject: [PATCH] SdkTool: Use slightly less repetitive approach for operation interface Change-Id: I4d1d205c610df39be6a810dfda3049ae14a06806 Reviewed-by: Reviewed-by: Eike Ziller --- src/tools/sdktool/addabiflavor.cpp | 24 +- src/tools/sdktool/addabiflavor.h | 36 +-- src/tools/sdktool/addcmakeoperation.cpp | 37 ++- src/tools/sdktool/addcmakeoperation.h | 38 +-- src/tools/sdktool/adddebuggeroperation.cpp | 28 +- src/tools/sdktool/adddebuggeroperation.h | 38 ++- src/tools/sdktool/adddeviceoperation.cpp | 103 +++---- src/tools/sdktool/adddeviceoperation.h | 54 ++-- src/tools/sdktool/addkeysoperation.cpp | 14 +- src/tools/sdktool/addkeysoperation.h | 38 +-- src/tools/sdktool/addkitoperation.cpp | 284 +++++++++----------- src/tools/sdktool/addkitoperation.h | 57 ++-- src/tools/sdktool/addqtoperation.cpp | 60 ++--- src/tools/sdktool/addqtoperation.h | 36 ++- src/tools/sdktool/addtoolchainoperation.cpp | 55 ++-- src/tools/sdktool/addtoolchainoperation.h | 40 ++- src/tools/sdktool/addvalueoperation.cpp | 31 +-- src/tools/sdktool/addvalueoperation.h | 37 +-- src/tools/sdktool/findkeyoperation.h | 13 +- src/tools/sdktool/findvalueoperation.cpp | 2 +- src/tools/sdktool/findvalueoperation.h | 12 +- src/tools/sdktool/getoperation.h | 12 +- src/tools/sdktool/operation.cpp | 10 +- src/tools/sdktool/operation.h | 30 ++- src/tools/sdktool/rmcmakeoperation.cpp | 22 +- src/tools/sdktool/rmcmakeoperation.h | 35 +-- src/tools/sdktool/rmdebuggeroperation.cpp | 21 +- src/tools/sdktool/rmkitoperation.cpp | 54 ++-- src/tools/sdktool/rmqtoperation.cpp | 16 +- src/tools/sdktool/rmtoolchainoperation.cpp | 12 +- src/tools/sdktool/rmtoolchainoperation.h | 12 +- 31 files changed, 578 insertions(+), 683 deletions(-) diff --git a/src/tools/sdktool/addabiflavor.cpp b/src/tools/sdktool/addabiflavor.cpp index 01faa7b4183..c7fde38a62a 100644 --- a/src/tools/sdktool/addabiflavor.cpp +++ b/src/tools/sdktool/addabiflavor.cpp @@ -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); diff --git a/src/tools/sdktool/addabiflavor.h b/src/tools/sdktool/addabiflavor.h index 61c817b8797..fabd9d001a9 100644 --- a/src/tools/sdktool/addabiflavor.h +++ b/src/tools/sdktool/addabiflavor.h @@ -27,32 +27,32 @@ #include "operation.h" -#include - -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 +}; diff --git a/src/tools/sdktool/addcmakeoperation.cpp b/src/tools/sdktool/addcmakeoperation.cpp index a5c087e8466..9bbec46ac68 100644 --- a/src/tools/sdktool/addcmakeoperation.cpp +++ b/src/tools/sdktool/addcmakeoperation.cpp @@ -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); diff --git a/src/tools/sdktool/addcmakeoperation.h b/src/tools/sdktool/addcmakeoperation.h index 51212154526..13045290178 100644 --- a/src/tools/sdktool/addcmakeoperation.h +++ b/src/tools/sdktool/addcmakeoperation.h @@ -27,34 +27,34 @@ #include "operation.h" -#include - -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 +}; diff --git a/src/tools/sdktool/adddebuggeroperation.cpp b/src/tools/sdktool/adddebuggeroperation.cpp index eb7b9c66004..e3797525786 100644 --- a/src/tools/sdktool/adddebuggeroperation.cpp +++ b/src/tools/sdktool/adddebuggeroperation.cpp @@ -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); diff --git a/src/tools/sdktool/adddebuggeroperation.h b/src/tools/sdktool/adddebuggeroperation.h index 5c7731d780a..788900ee2c6 100644 --- a/src/tools/sdktool/adddebuggeroperation.h +++ b/src/tools/sdktool/adddebuggeroperation.h @@ -27,31 +27,13 @@ #include "operation.h" -#include - -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 +}; diff --git a/src/tools/sdktool/adddeviceoperation.cpp b/src/tools/sdktool/adddeviceoperation.cpp index 91eff774cfe..4484e699225 100644 --- a/src/tools/sdktool/adddeviceoperation.cpp +++ b/src/tools/sdktool/adddeviceoperation.cpp @@ -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; -} diff --git a/src/tools/sdktool/adddeviceoperation.h b/src/tools/sdktool/adddeviceoperation.h index 843d78f6f6c..2e0c9cfb615 100644 --- a/src/tools/sdktool/adddeviceoperation.h +++ b/src/tools/sdktool/adddeviceoperation.h @@ -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 +}; diff --git a/src/tools/sdktool/addkeysoperation.cpp b/src/tools/sdktool/addkeysoperation.cpp index 95535a7e976..cc26b536f58 100644 --- a/src/tools/sdktool/addkeysoperation.cpp +++ b/src/tools/sdktool/addkeysoperation.cpp @@ -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 stack; // Set up a stack of QVariantMaps along the path we take: diff --git a/src/tools/sdktool/addkeysoperation.h b/src/tools/sdktool/addkeysoperation.h index 40483befd10..9623d715045 100644 --- a/src/tools/sdktool/addkeysoperation.h +++ b/src/tools/sdktool/addkeysoperation.h @@ -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 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; +}; diff --git a/src/tools/sdktool/addkitoperation.cpp b/src/tools/sdktool/addkitoperation.cpp index d5de0562bfa..d6b3442a701 100644 --- a/src/tools/sdktool/addkitoperation.cpp +++ b/src/tools/sdktool/addkitoperation.cpp @@ -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 &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 &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); diff --git a/src/tools/sdktool/addkitoperation.h b/src/tools/sdktool/addkitoperation.h index 037144353a0..89b588e7944 100644 --- a/src/tools/sdktool/addkitoperation.h +++ b/src/tools/sdktool/addkitoperation.h @@ -28,49 +28,17 @@ #include "operation.h" #include -#include -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 &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 &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 +}; diff --git a/src/tools/sdktool/addqtoperation.cpp b/src/tools/sdktool/addqtoperation.cpp index 7a94480d4a8..99eb3c78c0d 100644 --- a/src/tools/sdktool/addqtoperation.cpp +++ b/src/tools/sdktool/addqtoperation.cpp @@ -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); diff --git a/src/tools/sdktool/addqtoperation.h b/src/tools/sdktool/addqtoperation.h index 65e31ff8353..d7269e32454 100644 --- a/src/tools/sdktool/addqtoperation.h +++ b/src/tools/sdktool/addqtoperation.h @@ -27,34 +27,16 @@ #include "operation.h" -#include - -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 +}; diff --git a/src/tools/sdktool/addtoolchainoperation.cpp b/src/tools/sdktool/addtoolchainoperation.cpp index 6bd8380a15d..aec304b647e 100644 --- a/src/tools/sdktool/addtoolchainoperation.cpp +++ b/src/tools/sdktool/addtoolchainoperation.cpp @@ -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); diff --git a/src/tools/sdktool/addtoolchainoperation.h b/src/tools/sdktool/addtoolchainoperation.h index 5f743eba483..5e6ac39a7c2 100644 --- a/src/tools/sdktool/addtoolchainoperation.h +++ b/src/tools/sdktool/addtoolchainoperation.h @@ -27,34 +27,16 @@ #include "operation.h" -#include - -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 +}; diff --git a/src/tools/sdktool/addvalueoperation.cpp b/src/tools/sdktool/addvalueoperation.cpp index ef434d3b3f5..a604409f611 100644 --- a/src/tools/sdktool/addvalueoperation.cpp +++ b/src/tools/sdktool/addvalueoperation.cpp @@ -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(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; } diff --git a/src/tools/sdktool/addvalueoperation.h b/src/tools/sdktool/addvalueoperation.h index fe1910a2272..df19f1f2357 100644 --- a/src/tools/sdktool/addvalueoperation.h +++ b/src/tools/sdktool/addvalueoperation.h @@ -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; +}; diff --git a/src/tools/sdktool/findkeyoperation.h b/src/tools/sdktool/findkeyoperation.h index f6365c7ebd8..e8138fa7865 100644 --- a/src/tools/sdktool/findkeyoperation.h +++ b/src/tools/sdktool/findkeyoperation.h @@ -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()); diff --git a/src/tools/sdktool/findvalueoperation.cpp b/src/tools/sdktool/findvalueoperation.cpp index e59a0fa115e..2ed856c608b 100644 --- a/src/tools/sdktool/findvalueoperation.cpp +++ b/src/tools/sdktool/findvalueoperation.cpp @@ -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; diff --git a/src/tools/sdktool/findvalueoperation.h b/src/tools/sdktool/findvalueoperation.h index 2d49678b666..f53dae125b0 100644 --- a/src/tools/sdktool/findvalueoperation.h +++ b/src/tools/sdktool/findvalueoperation.h @@ -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, diff --git a/src/tools/sdktool/getoperation.h b/src/tools/sdktool/getoperation.h index 6d9b018ad04..56b7970ca35 100644 --- a/src/tools/sdktool/getoperation.h +++ b/src/tools/sdktool/getoperation.h @@ -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); diff --git a/src/tools/sdktool/operation.cpp b/src/tools/sdktool/operation.cpp index 44af491b867..4c1eec03d96 100644 --- a/src/tools/sdktool/operation.cpp +++ b/src/tools/sdktool/operation.cpp @@ -34,7 +34,7 @@ #include -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) { } diff --git a/src/tools/sdktool/operation.h b/src/tools/sdktool/operation.h index 99077fb2160..cc489ce0757 100644 --- a/src/tools/sdktool/operation.h +++ b/src/tools/sdktool/operation.h @@ -30,21 +30,25 @@ #include #include +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; + +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 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); }; diff --git a/src/tools/sdktool/rmcmakeoperation.cpp b/src/tools/sdktool/rmcmakeoperation.cpp index a5583c3f843..423abdbc695 100644 --- a/src/tools/sdktool/rmcmakeoperation.cpp +++ b/src/tools/sdktool/rmcmakeoperation.cpp @@ -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); } diff --git a/src/tools/sdktool/rmcmakeoperation.h b/src/tools/sdktool/rmcmakeoperation.h index 1a292a3fd6e..98d9f7847a0 100644 --- a/src/tools/sdktool/rmcmakeoperation.h +++ b/src/tools/sdktool/rmcmakeoperation.h @@ -27,25 +27,26 @@ #include "operation.h" -#include - -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 +}; diff --git a/src/tools/sdktool/rmdebuggeroperation.cpp b/src/tools/sdktool/rmdebuggeroperation.cpp index 8c2a6bea0d9..5ed3ec6a86e 100644 --- a/src/tools/sdktool/rmdebuggeroperation.cpp +++ b/src/tools/sdktool/rmdebuggeroperation.cpp @@ -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); } diff --git a/src/tools/sdktool/rmkitoperation.cpp b/src/tools/sdktool/rmkitoperation.cpp index 4e7487f40b0..306cfc3bd75 100644 --- a/src/tools/sdktool/rmkitoperation.cpp +++ b/src/tools/sdktool/rmkitoperation.cpp @@ -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 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); } diff --git a/src/tools/sdktool/rmqtoperation.cpp b/src/tools/sdktool/rmqtoperation.cpp index 53f3b760015..bad6c923060 100644 --- a/src/tools/sdktool/rmqtoperation.cpp +++ b/src/tools/sdktool/rmqtoperation.cpp @@ -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)); diff --git a/src/tools/sdktool/rmtoolchainoperation.cpp b/src/tools/sdktool/rmtoolchainoperation.cpp index 1cefe020609..bf71ec5cfe9 100644 --- a/src/tools/sdktool/rmtoolchainoperation.cpp +++ b/src/tools/sdktool/rmtoolchainoperation.cpp @@ -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()) diff --git a/src/tools/sdktool/rmtoolchainoperation.h b/src/tools/sdktool/rmtoolchainoperation.h index 3755320710b..cf4d12d1e5e 100644 --- a/src/tools/sdktool/rmtoolchainoperation.h +++ b/src/tools/sdktool/rmtoolchainoperation.h @@ -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);