1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-21 09:49:36 +01:00
This commit is contained in:
Eelco Dolstra 2020-11-18 18:02:18 +01:00
parent 966256c507
commit 562a6d2361

View file

@ -160,6 +160,8 @@ private:
Pipe inputPipe; Pipe inputPipe;
const std::chrono::time_point<std::chrono::steady_clock> startTime = std::chrono::steady_clock::now();
public: public:
ProgressBar(bool isTTY) ProgressBar(bool isTTY)
@ -171,8 +173,10 @@ public:
updateThread = std::thread([&]() { updateThread = std::thread([&]() {
auto state(state_.lock()); auto state(state_.lock());
while (state->active) { while (state->active) {
#if 0
if (!state->haveUpdate) if (!state->haveUpdate)
state.wait(updateCV); state.wait(updateCV);
#endif
updateStatusLine(*state); updateStatusLine(*state);
draw(*state); draw(*state);
state.wait_for(quitCV, std::chrono::milliseconds(50)); state.wait_for(quitCV, std::chrono::milliseconds(50));
@ -594,11 +598,22 @@ public:
if (line != "") if (line != "")
state.statusLines.insert_or_assign({idStatus, 0}, line); state.statusLines.insert_or_assign({idStatus, 0}, line);
std::vector<std::string> spinner =
//{"←", "↖", "↑", "↗", "→", "↘", "↓", "↙"};
//{"▁", "▂", "▃", "▄", "▅", "▆", "▇", "█", "▇", "▆", "▅", "▄", "▃", "▁"};
{"", "", "", "", "", "", "", ""};
auto now = std::chrono::steady_clock::now();
auto busyMark = ANSI_BOLD + spinner[(std::chrono::duration_cast<std::chrono::milliseconds>(now - startTime).count() / 200) % spinner.size()];
auto doneMark = ANSI_GREEN "";
if (state.activitiesByType.count(actEvaluate)) { if (state.activitiesByType.count(actEvaluate)) {
state.statusLines.insert_or_assign({idEvaluate, 0}, state.statusLines.insert_or_assign({idEvaluate, 0},
fmt("%s Evaluating", fmt("%s Evaluating",
state.activitiesByType[actEvaluate].its.empty() state.activitiesByType[actEvaluate].its.empty()
? ANSI_GREEN "" : ANSI_BOLD "")); ? doneMark : busyMark));
state.statusLines.insert_or_assign({idEvaluate, 1}, ""); state.statusLines.insert_or_assign({idEvaluate, 1}, "");
} }
@ -606,7 +621,7 @@ public:
state.statusLines.insert_or_assign({idLockFlake, 0}, state.statusLines.insert_or_assign({idLockFlake, 0},
fmt("%s Locking flake inputs", fmt("%s Locking flake inputs",
state.activitiesByType[actLockFlake].its.empty() state.activitiesByType[actLockFlake].its.empty()
? ANSI_GREEN "" : ANSI_BOLD "")); ? doneMark : busyMark));
state.statusLines.insert_or_assign({idLockFlake, 1}, ""); state.statusLines.insert_or_assign({idLockFlake, 1}, "");
} }
@ -667,8 +682,8 @@ public:
state.statusLines.insert_or_assign({idCopyPaths, n++}, state.statusLines.insert_or_assign({idCopyPaths, n++},
fmt("%s Fetched %d / %d store paths, %.1f / %.1f MiB", fmt("%s Fetched %d / %d store paths, %.1f / %.1f MiB",
copyPaths.running || copyPaths.done < copyPaths.expected copyPaths.running || copyPaths.done < copyPaths.expected
? ANSI_BOLD "" ? busyMark
: ANSI_GREEN "", : doneMark,
copyPaths.done, copyPaths.expected, copyPaths.done, copyPaths.expected,
copyPath.done / MiB, copyPath.expected / MiB)); copyPath.done / MiB, copyPath.expected / MiB));
@ -695,8 +710,8 @@ public:
builds.failed builds.failed
? ANSI_RED "" ? ANSI_RED ""
: builds.running || builds.done < builds.expected : builds.running || builds.done < builds.expected
? ANSI_BOLD "" ? busyMark
: ANSI_GREEN "", : doneMark,
builds.done, builds.expected) builds.done, builds.expected)
+ (builds.running ? fmt(", %d running", builds.running) : "") + (builds.running ? fmt(", %d running", builds.running) : "")
+ (builds.failed ? fmt(", %d failed", builds.failed) : "")); + (builds.failed ? fmt(", %d failed", builds.failed) : ""));
@ -705,8 +720,6 @@ public:
fmt(" %s", fmt(" %s",
renderBar(builds.done, builds.failed, builds.running, builds.expected))); renderBar(builds.done, builds.failed, builds.running, builds.expected)));
auto now = std::chrono::steady_clock::now();
for (auto & build : state.activitiesByType[actBuild].its) { for (auto & build : state.activitiesByType[actBuild].its) {
state.statusLines.insert_or_assign({idBuilds, n++}, state.statusLines.insert_or_assign({idBuilds, n++},
fmt(ANSI_BOLD " ‣ %s (%d s)%s: %s", fmt(ANSI_BOLD " ‣ %s (%d s)%s: %s",