| 489 | } |
| 490 | |
| 491 | void Application::findRelevantDirsAndDevs(OperationType operationType) |
| 492 | { |
| 493 | int dummy; |
| 494 | |
| 495 | // ensure filtering is cleared |
| 496 | m_connection.dirFilter().reset(); |
| 497 | m_connection.devFilter().reset(); |
| 498 | |
| 499 | // find relevant dirs |
| 500 | const bool allDirs = m_args.allDirs.isPresent(); |
| 501 | if (!allDirs) { |
| 502 | const Argument &dirArg = m_args.dir; |
| 503 | if (operationType == OperationType::Status) { |
| 504 | m_connection.dirFilter().emplace(); |
| 505 | } |
| 506 | if (dirArg.isPresent()) { |
| 507 | m_relevantDirs.reserve(dirArg.occurrences()); |
| 508 | for (size_t i = 0; i != dirArg.occurrences(); ++i) { |
| 509 | const QString dirIdentifier(argToQString(dirArg.values(i).front())); |
| 510 | const RelevantDir relevantDir(findDirectory(dirIdentifier)); |
| 511 | if (relevantDir.dirObj) { |
| 512 | if (m_connection.dirFilter().has_value()) { |
| 513 | m_connection.dirFilter()->insert(relevantDir.dirObj->id); |
| 514 | } |
| 515 | m_relevantDirs.emplace_back(std::move(relevantDir)); |
| 516 | } |
| 517 | } |
| 518 | } |
| 519 | } |
| 520 | |
| 521 | // find relevant devs |
| 522 | const bool allDevs = m_args.allDevs.isPresent(); |
| 523 | if (!allDevs) { |
| 524 | Argument &devArg = m_args.dev; |
| 525 | if (operationType == OperationType::Status) { |
| 526 | m_connection.devFilter().emplace(); |
| 527 | } |
| 528 | if (devArg.isPresent()) { |
| 529 | m_relevantDevs.reserve(devArg.occurrences()); |
| 530 | for (size_t i = 0; i != devArg.occurrences(); ++i) { |
| 531 | const SyncthingDev *dev = m_connection.findDevInfo(argToQString(devArg.values(i).front()), dummy); |
| 532 | if (!dev) { |
| 533 | dev = m_connection.findDevInfoByName(argToQString(devArg.values(i).front()), dummy); |
| 534 | } |
| 535 | if (!dev) { |
| 536 | cerr << Phrases::Warning << "Specified device \"" << devArg.values(i).front() << "\" does not exist and will be ignored." |
| 537 | << Phrases::End; |
| 538 | continue; |
| 539 | } |
| 540 | if (m_connection.devFilter().has_value()) { |
| 541 | m_connection.devFilter()->insert(dev->id); |
| 542 | } |
| 543 | m_relevantDevs.emplace_back(dev); |
| 544 | } |
| 545 | } |
| 546 | } |
| 547 | |
| 548 | // when displaying status information and no stats and no dirs/devs have been specified, just print information for all |
nothing calls this directly
no test coverage detected