SDKtool: Check for existing objects when creating kits

Check for existing Qt versions, toolchains and devices if
those ids are given.

Change-Id: I0447d55e01cc40e43669ba7999126b0260974c0b
Reviewed-by: Rainer Keller <rainer.keller@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Rainer Keller
2014-03-04 11:06:51 +01:00
committed by Tobias Hunger
parent 6db3893b16
commit 07f7dd9c14
12 changed files with 250 additions and 74 deletions

View File

@@ -187,7 +187,7 @@ bool AddToolChainOperation::test() const
return false;
// Make sure name stays unique:
map = addToolChain(map, QLatin1String("testId2"), QLatin1String("name"), QLatin1String("/tmp/test"),
map = addToolChain(map, QLatin1String("{some-tc-id}"), QLatin1String("name"), QLatin1String("/tmp/test"),
QLatin1String("test-abi"), QLatin1String("test-abi,test-abi2"),
KeyValuePairList() << KeyValuePair(QLatin1String("ExtraKey"), QVariant(QLatin1String("ExtraValue"))));
if (map.value(QLatin1String(COUNT)).toInt() != 2
@@ -206,7 +206,7 @@ bool AddToolChainOperation::test() const
return false;
tcData = map.value(QString::fromLatin1(PREFIX) + QLatin1Char('1')).toMap();
if (tcData.count() != 7
|| tcData.value(QLatin1String(ID)).toString() != QLatin1String("testId2")
|| tcData.value(QLatin1String(ID)).toString() != QLatin1String("{some-tc-id}")
|| tcData.value(QLatin1String(DISPLAYNAME)).toString() != QLatin1String("name2")
|| tcData.value(QLatin1String(AUTODETECTED)).toBool() != true
|| tcData.value(QLatin1String(PATH)).toString() != QLatin1String("/tmp/test")
@@ -225,15 +225,7 @@ QVariantMap AddToolChainOperation::addToolChain(const QVariantMap &map,
const QString &supportedAbis, const KeyValuePairList &extra)
{
// Sanity check: Does the Id already exist?
QStringList valueKeys = FindValueOperation::findValue(map, id.toUtf8());
bool hasId = false;
foreach (const QString &k, valueKeys) {
if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(ID))) {
hasId = true;
break;
}
}
if (hasId) {
if (exists(map, id)) {
std::cerr << "Error: Id " << qPrintable(id) << " already defined for tool chains." << std::endl;
return QVariantMap();
}
@@ -284,3 +276,21 @@ QVariantMap AddToolChainOperation::initializeToolChains()
map.insert(QLatin1String(VERSION), 1);
return map;
}
bool AddToolChainOperation::exists(const QVariantMap &map, const QString &id)
{
QStringList valueKeys = FindValueOperation::findValue(map, id.toUtf8());
foreach (const QString &k, valueKeys) {
if (k.endsWith(QString(QLatin1Char('/')) + QLatin1String(ID))) {
return true;
}
}
return false;
}
bool AddToolChainOperation::exists(const QString &id)
{
QVariantMap map = Operation::load(QLatin1String("toolchains"));
return exists(map, id);
}