From 966256c50710e8ed0a042ef0ea750048276dd90f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 18 Nov 2020 17:38:24 +0100 Subject: [PATCH] Show flake lock file updating in the progress bar --- src/libexpr/flake/flake.cc | 2 ++ src/libmain/progress-bar.cc | 27 ++++++++++++++++----------- src/libutil/logging.hh | 1 + 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/libexpr/flake/flake.cc b/src/libexpr/flake/flake.cc index 4f021570c..af86d7e8d 100644 --- a/src/libexpr/flake/flake.cc +++ b/src/libexpr/flake/flake.cc @@ -285,6 +285,8 @@ LockedFlake lockFlake( { settings.requireExperimentalFeature("flakes"); + Activity act(*logger, lvlTalkative, actLockFlake); + FlakeCache flakeCache; auto flake = getFlake(state, topRef, lockFlags.useRegistries, flakeCache); diff --git a/src/libmain/progress-bar.cc b/src/libmain/progress-bar.cc index 013643faf..4b45d71e2 100644 --- a/src/libmain/progress-bar.cc +++ b/src/libmain/progress-bar.cc @@ -114,6 +114,7 @@ private: enum StatusLineGroup { idHelp, + idLockFlake, idEvaluate, idDownload, idCopyPaths, @@ -443,7 +444,8 @@ public: if (type == actFileTransfer || (type == actCopyPath && hasAncestor(*state, actSubstitute, parent)) // FIXME? || type == actBuild - || type == actSubstitute) + || type == actSubstitute + || type == actLockFlake) i->visible = false; if (type == actBuild) @@ -593,16 +595,19 @@ public: state.statusLines.insert_or_assign({idStatus, 0}, line); if (state.activitiesByType.count(actEvaluate)) { - if (!state.activitiesByType[actEvaluate].its.empty()) { - state.statusLines.insert_or_assign({idEvaluate, 0}, - fmt(ANSI_BOLD "• Evaluating")); - state.statusLines.insert_or_assign({idEvaluate, 1}, ""); - } else { - // FIXME: evaluation could fail... - state.statusLines.insert_or_assign({idEvaluate, 0}, - fmt(ANSI_GREEN "✓ Evaluating")); - state.statusLines.insert_or_assign({idEvaluate, 1}, ""); - } + state.statusLines.insert_or_assign({idEvaluate, 0}, + fmt("%s Evaluating", + state.activitiesByType[actEvaluate].its.empty() + ? ANSI_GREEN "✓" : ANSI_BOLD "•")); + state.statusLines.insert_or_assign({idEvaluate, 1}, ""); + } + + if (state.activitiesByType.count(actLockFlake)) { + state.statusLines.insert_or_assign({idLockFlake, 0}, + fmt("%s Locking flake inputs", + state.activitiesByType[actLockFlake].its.empty() + ? ANSI_GREEN "✓" : ANSI_BOLD "•")); + state.statusLines.insert_or_assign({idLockFlake, 1}, ""); } auto renderBar = [](uint64_t done, uint64_t failed, uint64_t running, uint64_t expected) diff --git a/src/libutil/logging.hh b/src/libutil/logging.hh index 9e564eb29..0467f3b38 100644 --- a/src/libutil/logging.hh +++ b/src/libutil/logging.hh @@ -21,6 +21,7 @@ typedef enum { actPostBuildHook = 110, actBuildWaiting = 111, actEvaluate = 112, + actLockFlake = 113, } ActivityType; typedef enum {