aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/builds_cmd.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2025-11-07 11:22:45 +0100
committerGitHub Enterprise <[email protected]>2025-11-07 11:22:45 +0100
commitfa2b84a47a305bc3364eb71194b347d981e3c9fe (patch)
treee0e3ae5a3c3b22e14dc68bcb08433e6b67ebaa54 /src/zen/cmds/builds_cmd.cpp
parentremotestore op refactorings (#637) (diff)
downloadarchived-zen-fa2b84a47a305bc3364eb71194b347d981e3c9fe.tar.xz
archived-zen-fa2b84a47a305bc3364eb71194b347d981e3c9fe.zip
move progress bar to separate file (#638)
* move progress bar to separate file
Diffstat (limited to 'src/zen/cmds/builds_cmd.cpp')
-rw-r--r--src/zen/cmds/builds_cmd.cpp146
1 files changed, 38 insertions, 108 deletions
diff --git a/src/zen/cmds/builds_cmd.cpp b/src/zen/cmds/builds_cmd.cpp
index 91eedb756..3a334ed15 100644
--- a/src/zen/cmds/builds_cmd.cpp
+++ b/src/zen/cmds/builds_cmd.cpp
@@ -40,6 +40,8 @@
#include <zenutil/workerpools.h>
#include <zenutil/zenserverprocess.h>
+#include "../progressbar.h"
+
#include <signal.h>
#include <memory>
#include <numeric>
@@ -354,22 +356,6 @@ namespace {
return *NetworkPool;
}
- uint32_t GetUpdateDelayMS(ProgressBar::Mode InMode)
- {
- switch (InMode)
- {
- case ProgressBar::Mode::Plain:
- return 5000;
- case ProgressBar::Mode::Pretty:
- return 200;
- case ProgressBar::Mode::Log:
- return 2000;
- default:
- ZEN_ASSERT(false);
- return 0;
- }
- }
-
#define ZEN_CONSOLE_VERBOSE(fmtstr, ...) \
if (IsVerbose) \
{ \
@@ -386,62 +372,6 @@ namespace {
);
- class ConsoleOpLogProgressBar : public OperationLogOutput::ProgressBar
- {
- public:
- ConsoleOpLogProgressBar(zen::ProgressBar::Mode InMode, std::string_view InSubTask) : m_Inner(InMode, InSubTask) {}
-
- virtual void UpdateState(const State& NewState, bool DoLinebreak)
- {
- zen::ProgressBar::State State = {.Task = NewState.Task,
- .Details = NewState.Details,
- .TotalCount = NewState.TotalCount,
- .RemainingCount = NewState.RemainingCount,
- .Status = ConvertStatus(NewState.Status)};
- m_Inner.UpdateState(State, DoLinebreak);
- }
- virtual void Finish() { m_Inner.Finish(); }
-
- private:
- zen::ProgressBar::State::EStatus ConvertStatus(State::EStatus Status)
- {
- switch (Status)
- {
- case State::EStatus::Running:
- return zen::ProgressBar::State::EStatus::Running;
- case State::EStatus::Aborted:
- return zen::ProgressBar::State::EStatus::Aborted;
- case State::EStatus::Paused:
- return zen::ProgressBar::State::EStatus::Paused;
- default:
- return (zen::ProgressBar::State::EStatus)Status;
- }
- }
- zen::ProgressBar m_Inner;
- };
-
- class ConsoleOpLogOutput : public OperationLogOutput
- {
- public:
- ConsoleOpLogOutput(zen::ProgressBar::Mode InMode) : m_Mode(InMode) {}
- virtual void EmitLogMessage(int LogLevel, std::string_view Format, fmt::format_args Args)
- {
- logging::EmitConsoleLogMessage(LogLevel, Format, Args);
- }
-
- virtual void SetLogOperationName(std::string_view Name) { zen::ProgressBar::SetLogOperationName(m_Mode, Name); }
- virtual void SetLogOperationProgress(uint32_t StepIndex, uint32_t StepCount)
- {
- zen::ProgressBar::SetLogOperationProgress(m_Mode, StepIndex, StepCount);
- }
- virtual uint32_t GetProgressUpdateDelayMS() { return GetUpdateDelayMS(m_Mode); }
-
- virtual ProgressBar* CreateProgressBar(std::string_view InSubTask) { return new ConsoleOpLogProgressBar(m_Mode, InSubTask); }
-
- private:
- zen::ProgressBar::Mode m_Mode;
- };
-
bool IncludePath(std::span<const std::string> IncludeWildcards,
std::span<const std::string> ExcludeWildcards,
const std::filesystem::path& Path)
@@ -577,9 +507,9 @@ namespace {
ProgressBar::SetLogOperationName(ProgressMode, "Validate Part");
- ConsoleOpLogOutput Output(ProgressMode);
+ std::unique_ptr<OperationLogOutput> Output(CreateConsoleLogOutput(ProgressMode));
- BuildsOperationValidateBuildPart ValidateOp(Output,
+ BuildsOperationValidateBuildPart ValidateOp(*Output,
Storage,
AbortFlag,
PauseFlag,
@@ -620,10 +550,10 @@ namespace {
{
Stopwatch UploadTimer;
- ConsoleOpLogOutput Output(ProgressMode);
+ std::unique_ptr<OperationLogOutput> Output(CreateConsoleLogOutput(ProgressMode));
BuildsOperationUploadFolder UploadOp(
- Output,
+ *Output,
Storage,
AbortFlag,
PauseFlag,
@@ -1377,17 +1307,17 @@ namespace {
// TODO: GetBlockDescriptions for all BlockRawHashes in one go - check for local block descriptions when we cache them
{
- ConsoleLogOutput OperationLogOutput;
- bool AttemptFallback = false;
- OutBlockDescriptions = GetBlockDescriptions(OperationLogOutput,
- *Storage.BuildStorage,
- Storage.BuildCacheStorage.get(),
- BuildId,
- BuildPartId,
- BlockRawHashes,
- AttemptFallback,
- IsQuiet,
- IsVerbose);
+ std::unique_ptr<OperationLogOutput> OperationLogOutput(CreateConsoleLogOutput(ProgressMode));
+ bool AttemptFallback = false;
+ OutBlockDescriptions = GetBlockDescriptions(*OperationLogOutput,
+ *Storage.BuildStorage,
+ Storage.BuildCacheStorage.get(),
+ BuildId,
+ BuildPartId,
+ BlockRawHashes,
+ AttemptFallback,
+ IsQuiet,
+ IsVerbose);
}
CalculateLocalChunkOrders(AbsoluteChunkOrders,
@@ -1969,7 +1899,7 @@ namespace {
{
if (!ChunkController && !IsQuiet)
{
- ZEN_CONSOLE_WARN("Unspecified chunking algorith, using default");
+ ZEN_CONSOLE_INFO("Unspecified chunking algorithm, using default");
ChunkController = CreateStandardChunkingController(StandardChunkingControllerSettings{});
}
@@ -2033,9 +1963,9 @@ namespace {
ProgressBar::SetLogOperationProgress(ProgressMode, TaskSteps::Download, TaskSteps::StepCount);
- ConsoleOpLogOutput Output(ProgressMode);
- BuildsOperationUpdateFolder Updater(
- Output,
+ std::unique_ptr<OperationLogOutput> Output(CreateConsoleLogOutput(ProgressMode));
+ BuildsOperationUpdateFolder Updater(
+ *Output,
Storage,
AbortFlag,
PauseFlag,
@@ -2050,21 +1980,21 @@ namespace {
BlockDescriptions,
LooseChunkHashes,
BuildsOperationUpdateFolder::Options{.IsQuiet = IsQuiet,
- .IsVerbose = IsVerbose,
- .AllowFileClone = AllowFileClone,
- .UseSparseFiles = UseSparseFiles,
- .SystemRootDir = Options.SystemRootDir,
- .ZenFolderPath = Options.ZenFolderPath,
- .LargeAttachmentSize = LargeAttachmentSize,
- .PreferredMultipartChunkSize = PreferredMultipartChunkSize,
- .PartialBlockRequestMode = Options.PartialBlockRequestMode,
- .WipeTargetFolder = Options.CleanTargetFolder,
- .PrimeCacheOnly = Options.PrimeCacheOnly,
- .EnableOtherDownloadsScavenging = Options.EnableOtherDownloadsScavenging,
- .EnableTargetFolderScavenging = Options.EnableTargetFolderScavenging,
- .ValidateCompletedSequences = Options.PostDownloadVerify,
- .ExcludeFolders = DefaultExcludeFolders,
- .ExcludeExtensions = DefaultExcludeExtensions});
+ .IsVerbose = IsVerbose,
+ .AllowFileClone = AllowFileClone,
+ .UseSparseFiles = UseSparseFiles,
+ .SystemRootDir = Options.SystemRootDir,
+ .ZenFolderPath = Options.ZenFolderPath,
+ .LargeAttachmentSize = LargeAttachmentSize,
+ .PreferredMultipartChunkSize = PreferredMultipartChunkSize,
+ .PartialBlockRequestMode = Options.PartialBlockRequestMode,
+ .WipeTargetFolder = Options.CleanTargetFolder,
+ .PrimeCacheOnly = Options.PrimeCacheOnly,
+ .EnableOtherDownloadsScavenging = Options.EnableOtherDownloadsScavenging,
+ .EnableTargetFolderScavenging = Options.EnableTargetFolderScavenging,
+ .ValidateCompletedSequences = Options.PostDownloadVerify,
+ .ExcludeFolders = DefaultExcludeFolders,
+ .ExcludeExtensions = DefaultExcludeExtensions});
{
ProgressBar::PushLogOperation(ProgressMode, "Download");
auto _ = MakeGuard([]() { ProgressBar::PopLogOperation(ProgressMode); });
@@ -3959,9 +3889,9 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
ProgressBar::SetLogOperationName(ProgressMode, "Prime Cache");
- ConsoleOpLogOutput Output(ProgressMode);
+ std::unique_ptr<OperationLogOutput> Output(CreateConsoleLogOutput(ProgressMode));
- BuildsOperationPrimeCache PrimeOp(Output,
+ BuildsOperationPrimeCache PrimeOp(*Output,
Storage,
AbortFlag,
PauseFlag,