Improve logging status when rebuilding DB

Override previous "Processing package …" line to avoid huge output.
This commit is contained in:
Martchus 2023-06-03 17:48:36 +02:00
parent ce6da89a40
commit 77000ac7d3
1 changed files with 12 additions and 7 deletions

View File

@ -77,19 +77,24 @@ void LibPkg::Database::rebuildDb()
auto txn = m_storage->packages.getRWTransaction();
auto processed = std::size_t();
auto ok = std::size_t();
txn.rebuild([count = txn.size(), &processed, &ok](StorageID id, Package *package) mutable {
std::cerr << "Processing package " << ++processed << " / " << count << '\n';
auto lastOk = false;
txn.rebuild([count = txn.size(), &processed, &ok, &lastOk](StorageID id, Package *package) mutable {
std::cerr << "Processing package " << ++processed << " / " << count << " ";
if (!package) {
std::cerr << "Deleting package " << id << ": unable to deserialize\n";
return false;
std::cerr << "\nDeleting package " << id << ": unable to deserialize\n";
return lastOk = false;
}
if (package->name.empty()) {
std::cerr << "Deleting package " << id << ": name is empty\n";
return false;
std::cerr << "\nDeleting package " << id << ": name is empty\n";
return lastOk = false;
}
std::cerr << '\r';
++ok;
return true;
return lastOk = true;
});
if (lastOk) {
std::cerr << '\n';
}
if (ok < processed) {
std::cerr << "Discarding " << (processed - ok) << " invalid packages from \"" << name << "\".\n";
} else {