cli: Clear current status after finalizing log

This commit is contained in:
Martchus 2017-10-09 19:03:54 +02:00
parent 41def42c71
commit 7f7d5f22c7
1 changed files with 7 additions and 7 deletions

View File

@ -592,28 +592,27 @@ bool stringToBool(const string &str)
}
bool logLineFinalized = true;
static string lastLoggedStatus;
void logStatus(const StatusProvider &statusProvider)
{
static string lastStatus;
if(statusProvider.currentStatus() != lastStatus) {
if(statusProvider.currentStatus() != lastLoggedStatus) {
// the ongoing operation ("status") has changed
// -> finalize previous line and make new line
if(!logLineFinalized) {
cout << "\r - [100%] " << lastStatus << endl;
cout << "\r - [100%] " << lastLoggedStatus << endl;
logLineFinalized = true;
}
// -> update lastStatus
lastStatus = statusProvider.currentStatus();
lastLoggedStatus = statusProvider.currentStatus();
}
// update current line if an operation is ongoing (status is not empty)
if(!lastStatus.empty()) {
if(!lastLoggedStatus.empty()) {
int percentage = static_cast<int>(statusProvider.currentPercentage() * 100);
if(percentage < 0) {
percentage = 0;
}
cout << "\r - [" << setw(3) << percentage << "%] " << lastStatus << flush;
cout << "\r - [" << setw(3) << percentage << "%] " << lastLoggedStatus << flush;
logLineFinalized = false;
}
}
@ -623,6 +622,7 @@ void finalizeLog()
if(!logLineFinalized) {
cout << '\n';
logLineFinalized = true;
lastLoggedStatus.clear();
}
}