| 545 | overload(Ts...) -> overload<Ts...>; |
| 546 | |
| 547 | void ComponentUpdateTask::performUpdateActions() |
| 548 | { |
| 549 | auto& instance = d->m_profile->d->m_instance; |
| 550 | bool addedActions; |
| 551 | QStringList toRemove; |
| 552 | do { |
| 553 | addedActions = false; |
| 554 | toRemove.clear(); |
| 555 | auto& components = d->m_profile->d->components; |
| 556 | auto& componentIndex = d->m_profile->d->componentIndex; |
| 557 | for (auto component : components) { |
| 558 | if (!component) { |
| 559 | continue; |
| 560 | } |
| 561 | auto action = component->getUpdateAction(); |
| 562 | auto visitor = |
| 563 | overload{ [](const UpdateActionNone&) { |
| 564 | // noop |
| 565 | }, |
| 566 | [&component, &instance](const UpdateActionChangeVersion& cv) { |
| 567 | qCDebug(instanceProfileResolveC) << instance->name() << "|" |
| 568 | << "UpdateActionChangeVersion" << component->getID() << ":" |
| 569 | << component->getVersion() << "change to" << cv.targetVersion; |
| 570 | component->setVersion(cv.targetVersion); |
| 571 | component->waitLoadMeta(); |
| 572 | }, |
| 573 | [&component, &instance](const UpdateActionLatestRecommendedCompatible lrc) { |
| 574 | qCDebug(instanceProfileResolveC) |
| 575 | << instance->name() << "|" |
| 576 | << "UpdateActionLatestRecommendedCompatible" << component->getID() << ":" << component->getVersion() |
| 577 | << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version; |
| 578 | auto versionList = APPLICATION->metadataIndex()->get(component->getID()); |
| 579 | if (versionList) { |
| 580 | versionList->waitToLoad(); |
| 581 | auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); |
| 582 | if (!recommended) { |
| 583 | recommended = versionList->getLatestForParent(lrc.parentUid, lrc.version); |
| 584 | } |
| 585 | if (recommended) { |
| 586 | component->setVersion(recommended->version()); |
| 587 | component->waitLoadMeta(); |
| 588 | return; |
| 589 | } else { |
| 590 | component->addComponentProblem(ProblemSeverity::Error, |
| 591 | QObject::tr("No compatible version of %1 found for %2 %3") |
| 592 | .arg(component->getName(), lrc.parentName, lrc.version)); |
| 593 | } |
| 594 | } else { |
| 595 | component->addComponentProblem( |
| 596 | ProblemSeverity::Error, |
| 597 | QObject::tr("No version list in metadata index for %1").arg(component->getID())); |
| 598 | } |
| 599 | }, |
| 600 | [&component, &instance, &toRemove](const UpdateActionRemove&) { |
| 601 | qCDebug(instanceProfileResolveC) |
| 602 | << instance->name() << "|" |
| 603 | << "UpdateActionRemove" << component->getID() << ":" << component->getVersion() << "removing"; |
| 604 | toRemove.append(component->getID()); |
nothing calls this directly
no test coverage detected