| 580 | overload(Ts...) -> overload<Ts...>; |
| 581 | |
| 582 | void ComponentUpdateTask::performUpdateActions() |
| 583 | { |
| 584 | auto& instance = d->m_profile->d->m_instance; |
| 585 | bool addedActions; |
| 586 | QStringList toRemove; |
| 587 | do { |
| 588 | addedActions = false; |
| 589 | toRemove.clear(); |
| 590 | auto& components = d->m_profile->d->components; |
| 591 | auto& componentIndex = d->m_profile->d->componentIndex; |
| 592 | for (auto component : components) { |
| 593 | if (!component) { |
| 594 | continue; |
| 595 | } |
| 596 | auto action = component->getUpdateAction(); |
| 597 | auto visitor = |
| 598 | overload{ [](const UpdateActionNone&) { |
| 599 | // noop |
| 600 | }, |
| 601 | [&component, &instance](const UpdateActionChangeVersion& cv) { |
| 602 | qCDebug(instanceProfileResolveC) << instance->name() << "|" |
| 603 | << "UpdateActionChangeVersion" << component->getID() << ":" |
| 604 | << component->getVersion() << "change to" << cv.targetVersion; |
| 605 | component->setVersion(cv.targetVersion); |
| 606 | component->waitLoadMeta(); |
| 607 | }, |
| 608 | [&component, &instance](const UpdateActionLatestRecommendedCompatible& lrc) { |
| 609 | qCDebug(instanceProfileResolveC) |
| 610 | << instance->name() << "|" |
| 611 | << "UpdateActionLatestRecommendedCompatible" << component->getID() << ":" << component->getVersion() |
| 612 | << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version; |
| 613 | auto versionList = APPLICATION->metadataIndex()->get(component->getID()); |
| 614 | if (versionList) { |
| 615 | versionList->waitToLoad(); |
| 616 | auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); |
| 617 | if (!recommended) { |
| 618 | recommended = versionList->getLatestForParent(lrc.parentUid, lrc.version); |
| 619 | } |
| 620 | if (recommended) { |
| 621 | component->setVersion(recommended->version()); |
| 622 | component->waitLoadMeta(); |
| 623 | return; |
| 624 | } else { |
| 625 | component->addComponentProblem(ProblemSeverity::Error, |
| 626 | QObject::tr("No compatible version of %1 found for %2 %3") |
| 627 | .arg(component->getName(), lrc.parentName, lrc.version)); |
| 628 | } |
| 629 | } else { |
| 630 | component->addComponentProblem( |
| 631 | ProblemSeverity::Error, |
| 632 | QObject::tr("No version list in metadata index for %1").arg(component->getID())); |
| 633 | } |
| 634 | }, |
| 635 | [&component, &instance, &toRemove](const UpdateActionRemove&) { |
| 636 | qCDebug(instanceProfileResolveC) |
| 637 | << instance->name() << "|" |
| 638 | << "UpdateActionRemove" << component->getID() << ":" << component->getVersion() << "removing"; |
| 639 | toRemove.append(component->getID()); |
nothing calls this directly
no test coverage detected